home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 9 / Night Owl CD-ROM (NOPV9) (Night Owl Publisher) (1993).ISO / 002a / be310.zip / BINGO.DOC < prev    next >
Text File  |  1993-06-01  |  355KB  |  8,777 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.                               The Bingo Text Editor
  11.  
  12.                                A Shareware Product
  13.                                   Version 3.10
  14.  
  15.  
  16.                                 Reference Manual
  17.                                Copyright 1989,1993
  18.                             Christopher R. S. Schanck
  19.  
  20.  
  21.                                  June 1st, 1993
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.                                             _______
  48.                                        ____|__     |               (R)
  49.                                     --|       |    |-------------------
  50.                                       |   ____|__  |  Association of
  51.                                       |  |       |_|  Shareware
  52.                                       |__|   o   |    Professionals
  53.                                     -----|   |   |---------------------
  54.                                          |___|___|    MEMBER
  55.  
  56.  
  57.  
  58.  
  59.  
  60.                                 Table of Contents
  61.                                 -----------------
  62.  
  63.      Introduction  . . . . . . . . . . . . . . . . . . . . . . . . . .    1
  64.           Philosophy . . . . . . . . . . . . . . . . . . . . . . . . .    2
  65.           The Association of Shareware Professionals . . . . . . . . .    3
  66.           The Shareware Concept and Registering  . . . . . . . . . . .    4
  67.           Ordering Bingo . . . . . . . . . . . . . . . . . . . . . . .    5
  68.                Direct from Me  . . . . . . . . . . . . . . . . . . . .    5
  69.                PsL Shareware Registration  . . . . . . . . . . . . . .    5
  70.                Compuserve Online Registration  . . . . . . . . . . . .    5
  71.           Things to Possibly Come  . . . . . . . . . . . . . . . . . .    6
  72.           Support  . . . . . . . . . . . . . . . . . . . . . . . . . .    7
  73.                US Mail Contact . . . . . . . . . . . . . . . . . . . .    7
  74.                CompuServe Contact  . . . . . . . . . . . . . . . . . .    7
  75.                Internet Contact  . . . . . . . . . . . . . . . . . . .    7
  76.           Getting the Latest Version . . . . . . . . . . . . . . . . .    8
  77.           Using this Manual  . . . . . . . . . . . . . . . . . . . . .    9
  78.  
  79.      Overview  . . . . . . . . . . . . . . . . . . . . . . . . . . . .   10
  80.           Installing Bingo . . . . . . . . . . . . . . . . . . . . . .   10
  81.           BOPTS: The External Configuration Utility  . . . . . . . . .   11
  82.                Number of Buckets and Bucket Size . . . . . . . . . . .   11
  83.                Chess Stack Size  . . . . . . . . . . . . . . . . . . .   11
  84.                Chess Number of Variables . . . . . . . . . . . . . . .   11
  85.                Chess Number of Functions . . . . . . . . . . . . . . .   11
  86.                Scramble Registration Name  . . . . . . . . . . . . . .   12
  87.           Bingo and Virtual Memory . . . . . . . . . . . . . . . . . .   13
  88.                Impact of Virtual Memory on Performance . . . . . . . .   13
  89.           KEYCFG: The Keyboard Configuration Program . . . . . . . . .   15
  90.                Key Names . . . . . . . . . . . . . . . . . . . . . . .   15
  91.                Section 1 -- Key Assignments  . . . . . . . . . . . . .   17
  92.                     'open_end' Key Identifier  . . . . . . . . . . . .   19
  93.                     'cur_file' Key Identifier  . . . . . . . . . . . .   19
  94.                     Using Chess functions  . . . . . . . . . . . . . .   19
  95.                Section 2 - Chess Code  . . . . . . . . . . . . . . . .   19
  96.                KEYCFG Command Line Options . . . . . . . . . . . . . .   19
  97.           The KEYINFO Key Information Utility  . . . . . . . . . . . .   21
  98.           Starting Bingo . . . . . . . . . . . . . . . . . . . . . . .   22
  99.           The BINGO.INI file . . . . . . . . . . . . . . . . . . . . .   23
  100.           Bingo and Larger Screen Displays . . . . . . . . . . . . . .   26
  101.           Bingo's Menu System  . . . . . . . . . . . . . . . . . . . .   27
  102.           Bingo's User Interface . . . . . . . . . . . . . . . . . . .   28
  103.                String Entry Boxes  . . . . . . . . . . . . . . . . . .   28
  104.                Yes/No Boxes  . . . . . . . . . . . . . . . . . . . . .   29
  105.                Non-Editable Display Boxes  . . . . . . . . . . . . . .   29
  106.                List-Picking Boxes  . . . . . . . . . . . . . . . . . .   29
  107.           Directory Lister . . . . . . . . . . . . . . . . . . . . . .   30
  108.           Bingo and File Names . . . . . . . . . . . . . . . . . . . .   31
  109.           The Status Line  . . . . . . . . . . . . . . . . . . . . . .   32
  110.           Bingo and The Mouse  . . . . . . . . . . . . . . . . . . . .   33
  111.                The Mouse Cursor  . . . . . . . . . . . . . . . . . . .   33
  112.                The Mouse at the General Editing Level  . . . . . . . .   33
  113.  
  114.  
  115.  
  116.  
  117.                The Mouse and The Menus . . . . . . . . . . . . . . . .   35
  118.                The Mouse and Dialogue Boxes  . . . . . . . . . . . . .   36
  119.                     String Entry Boxes . . . . . . . . . . . . . . . .   36
  120.                     Yes/No Boxes . . . . . . . . . . . . . . . . . . .   36
  121.                     Non-Editable Display Boxes . . . . . . . . . . . .   36
  122.                     List-Picking Boxes . . . . . . . . . . . . . . . .   36
  123.                The Mouse and The ASCII Table . . . . . . . . . . . . .   37
  124.  
  125.      Bingo Function Summary  . . . . . . . . . . . . . . . . . . . . .   39
  126.           Configuring Bingo  . . . . . . . . . . . . . . . . . . . . .   40
  127.                Function List . . . . . . . . . . . . . . . . . . . . .   40
  128.           Basic Editing  . . . . . . . . . . . . . . . . . . . . . . .   49
  129.                The Destructive Backspace . . . . . . . . . . . . . . .   49
  130.                The 'Default_' Functions  . . . . . . . . . . . . . . .   49
  131.                Function List . . . . . . . . . . . . . . . . . . . . .   49
  132.           Block Handling . . . . . . . . . . . . . . . . . . . . . . .   52
  133.                Marking . . . . . . . . . . . . . . . . . . . . . . . .   52
  134.                Operations on Blocks  . . . . . . . . . . . . . . . . .   52
  135.                Named Buffers . . . . . . . . . . . . . . . . . . . . .   53
  136.                Emacs_yank  . . . . . . . . . . . . . . . . . . . . . .   53
  137.                Function List . . . . . . . . . . . . . . . . . . . . .   53
  138.           Undo and Error Parsing . . . . . . . . . . . . . . . . . . .   57
  139.                Undo Capabilities . . . . . . . . . . . . . . . . . . .   57
  140.                Manipulating the Unkill Stack . . . . . . . . . . . . .   58
  141.                Error Parsing . . . . . . . . . . . . . . . . . . . . .   58
  142.                     Error Parsing Method . . . . . . . . . . . . . . .   58
  143.                Function List . . . . . . . . . . . . . . . . . . . . .   59
  144.           File Handling  . . . . . . . . . . . . . . . . . . . . . . .   61
  145.                Function List . . . . . . . . . . . . . . . . . . . . .   61
  146.           Info . . . . . . . . . . . . . . . . . . . . . . . . . . . .   64
  147.                Function List . . . . . . . . . . . . . . . . . . . . .   64
  148.           Macros . . . . . . . . . . . . . . . . . . . . . . . . . . .   65
  149.                Macro Space . . . . . . . . . . . . . . . . . . . . . .   65
  150.                Defining Macros . . . . . . . . . . . . . . . . . . . .   65
  151.                Ending Macro Definition . . . . . . . . . . . . . . . .   65
  152.                Saving Macros . . . . . . . . . . . . . . . . . . . . .   65
  153.                Saving the Entire Key Set . . . . . . . . . . . . . . .   66
  154.                Executing a Macro File  . . . . . . . . . . . . . . . .   66
  155.                Function List . . . . . . . . . . . . . . . . . . . . .   66
  156.           Navigation . . . . . . . . . . . . . . . . . . . . . . . . .   68
  157.                Function List . . . . . . . . . . . . . . . . . . . . .   68
  158.           System Operations  . . . . . . . . . . . . . . . . . . . . .   72
  159.                Simple Execution and Shelling . . . . . . . . . . . . .   72
  160.                Swap Execution and Shelling . . . . . . . . . . . . . .   72
  161.                Function List . . . . . . . . . . . . . . . . . . . . .   72
  162.           Printing . . . . . . . . . . . . . . . . . . . . . . . . . .   74
  163.                Function List . . . . . . . . . . . . . . . . . . . . .   74
  164.           Searching  . . . . . . . . . . . . . . . . . . . . . . . . .   75
  165.                Regular Expression Search and Replace Examples  . . . .   76
  166.                Incremental Searching . . . . . . . . . . . . . . . . .   77
  167.                Function List . . . . . . . . . . . . . . . . . . . . .   77
  168.           Utilities  . . . . . . . . . . . . . . . . . . . . . . . . .   80
  169.                Function List . . . . . . . . . . . . . . . . . . . . .   80
  170.           Windows  . . . . . . . . . . . . . . . . . . . . . . . . . .   83
  171.  
  172.  
  173.  
  174.  
  175.                Window_vertical . . . . . . . . . . . . . . . . . . . .   83
  176.                Window_one and Window_zoom  . . . . . . . . . . . . . .   83
  177.                Window_max  . . . . . . . . . . . . . . . . . . . . . .   83
  178.                Function List . . . . . . . . . . . . . . . . . . . . .   83
  179.           Extra Functions  . . . . . . . . . . . . . . . . . . . . . .   85
  180.                Pick and Exec . . . . . . . . . . . . . . . . . . . . .   85
  181.                Repeat_last . . . . . . . . . . . . . . . . . . . . . .   85
  182.                Box Draw Mode . . . . . . . . . . . . . . . . . . . . .   85
  183.                Cmd_line  . . . . . . . . . . . . . . . . . . . . . . .   86
  184.                Function List . . . . . . . . . . . . . . . . . . . . .   88
  185.  
  186.      Chess: Bingo's Extension Language . . . . . . . . . . . . . . . .   90
  187.           Introduction . . . . . . . . . . . . . . . . . . . . . . . .   90
  188.           Things to Possibly Come  . . . . . . . . . . . . . . . . . .   91
  189.           The Body of a Chess Program  . . . . . . . . . . . . . . . .   92
  190.           Variables and Constants and Comments . . . . . . . . . . . .   93
  191.                Integers and Characters:  . . . . . . . . . . . . . . .   93
  192.                Constants:  . . . . . . . . . . . . . . . . . . . . . .   93
  193.                Comments: . . . . . . . . . . . . . . . . . . . . . . .   94
  194.           Arrays and Pointers  . . . . . . . . . . . . . . . . . . . .   95
  195.                Arrays: . . . . . . . . . . . . . . . . . . . . . . . .   95
  196.                Pointers: . . . . . . . . . . . . . . . . . . . . . . .   95
  197.           Operators and Expressions  . . . . . . . . . . . . . . . . .   98
  198.                Operators . . . . . . . . . . . . . . . . . . . . . . .   98
  199.                Expressions . . . . . . . . . . . . . . . . . . . . . .   99
  200.           Program Statements . . . . . . . . . . . . . . . . . . . . .  100
  201.                IF  . . . . . . . . . . . . . . . . . . . . . . . . . .  100
  202.                IF-ELSE . . . . . . . . . . . . . . . . . . . . . . . .  100
  203.                WHILE . . . . . . . . . . . . . . . . . . . . . . . . .  101
  204.                DO ... WHILE  . . . . . . . . . . . . . . . . . . . . .  101
  205.                RETURN  . . . . . . . . . . . . . . . . . . . . . . . .  101
  206.                BREAK . . . . . . . . . . . . . . . . . . . . . . . . .  102
  207.                Compound Statements . . . . . . . . . . . . . . . . . .  102
  208.           User Functions . . . . . . . . . . . . . . . . . . . . . . .  103
  209.                An Example Chess Program  . . . . . . . . . . . . . . .  103
  210.                Declaration . . . . . . . . . . . . . . . . . . . . . .  103
  211.                Variable Scope  . . . . . . . . . . . . . . . . . . . .  105
  212.                The Rules of Scoping  . . . . . . . . . . . . . . . . .  105
  213.           Library Functions  . . . . . . . . . . . . . . . . . . . . .  106
  214.  
  215.      Using Chess From Within Bingo . . . . . . . . . . . . . . . . . .  107
  216.           Chess Code in a *.CFG File . . . . . . . . . . . . . . . . .  107
  217.           Attaching Chess Functions to Keystrokes  . . . . . . . . . .  108
  218.           The Chess Command Line in Bingo  . . . . . . . . . . . . . .  108
  219.           Chess Program Files  . . . . . . . . . . . . . . . . . . . .  109
  220.           Attaching Chess Functions to Profile Files . . . . . . . . .  109
  221.           Running a Chess File on Start Up . . . . . . . . . . . . . .  110
  222.           Order of Execution on Start Up . . . . . . . . . . . . . . .  110
  223.           Debugging Chess Programs . . . . . . . . . . . . . . . . . .  110
  224.  
  225.      Library Function Reference  . . . . . . . . . . . . . . . . . . .  111
  226.           Bingo from within Chess  . . . . . . . . . . . . . . . . . .  111
  227.           Ask  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  111
  228.           Atoi . . . . . . . . . . . . . . . . . . . . . . . . . . . .  111
  229.  
  230.  
  231.  
  232.  
  233.           B_cmd  . . . . . . . . . . . . . . . . . . . . . . . . . . .  112
  234.           Beep . . . . . . . . . . . . . . . . . . . . . . . . . . . .  112
  235.           Box_pick . . . . . . . . . . . . . . . . . . . . . . . . . .  112
  236.           Clear_regs . . . . . . . . . . . . . . . . . . . . . . . . .  113
  237.           Gen_interrupt  . . . . . . . . . . . . . . . . . . . . . . .  113
  238.           Get_str  . . . . . . . . . . . . . . . . . . . . . . . . . .  113
  239.           Get_yesno  . . . . . . . . . . . . . . . . . . . . . . . . .  113
  240.           Get_char . . . . . . . . . . . . . . . . . . . . . . . . . .  114
  241.           Get_curr_text  . . . . . . . . . . . . . . . . . . . . . . .  114
  242.           Get_fname  . . . . . . . . . . . . . . . . . . . . . . . . .  114
  243.           Get_reg  . . . . . . . . . . . . . . . . . . . . . . . . . .  114
  244.           Get_text . . . . . . . . . . . . . . . . . . . . . . . . . .  114
  245.           Getkey . . . . . . . . . . . . . . . . . . . . . . . . . . .  115
  246.           Itoa . . . . . . . . . . . . . . . . . . . . . . . . . . . .  115
  247.           Key  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  115
  248.           Memcpy . . . . . . . . . . . . . . . . . . . . . . . . . . .  115
  249.           Msg  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  116
  250.           Pick_file  . . . . . . . . . . . . . . . . . . . . . . . . .  116
  251.           Put_char . . . . . . . . . . . . . . . . . . . . . . . . . .  116
  252.           Put_text . . . . . . . . . . . . . . . . . . . . . . . . . .  116
  253.           Put_text_curr  . . . . . . . . . . . . . . . . . . . . . . .  116
  254.           Run  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  117
  255.           Set_display  . . . . . . . . . . . . . . . . . . . . . . . .  117
  256.           Set_msg_wait . . . . . . . . . . . . . . . . . . . . . . . .  117
  257.           Set_recall . . . . . . . . . . . . . . . . . . . . . . . . .  117
  258.           Set_reg  . . . . . . . . . . . . . . . . . . . . . . . . . .  118
  259.           Sformat  . . . . . . . . . . . . . . . . . . . . . . . . . .  118
  260.           Str  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  119
  261.           Strcat . . . . . . . . . . . . . . . . . . . . . . . . . . .  119
  262.           Strcmp . . . . . . . . . . . . . . . . . . . . . . . . . . .  119
  263.           Strcpy . . . . . . . . . . . . . . . . . . . . . . . . . . .  119
  264.           Strlen . . . . . . . . . . . . . . . . . . . . . . . . . . .  119
  265.           Strndx . . . . . . . . . . . . . . . . . . . . . . . . . . .  120
  266.           Update_display . . . . . . . . . . . . . . . . . . . . . . .  120
  267.           Valid_name . . . . . . . . . . . . . . . . . . . . . . . . .  120
  268.  
  269.      "Ask" Arguments . . . . . . . . . . . . . . . . . . . . . . . . .  121
  270.           File_autoindent  . . . . . . . . . . . . . . . . . . . . . .  121
  271.           File_bspace  . . . . . . . . . . . . . . . . . . . . . . . .  121
  272.           File_changes . . . . . . . . . . . . . . . . . . . . . . . .  121
  273.           File_cmode . . . . . . . . . . . . . . . . . . . . . . . . .  121
  274.           File_column  . . . . . . . . . . . . . . . . . . . . . . . .  122
  275.           File_dialogue  . . . . . . . . . . . . . . . . . . . . . . .  122
  276.           File_matching  . . . . . . . . . . . . . . . . . . . . . . .  122
  277.           File_name  . . . . . . . . . . . . . . . . . . . . . . . . .  122
  278.           File_new . . . . . . . . . . . . . . . . . . . . . . . . . .  122
  279.           File_number  . . . . . . . . . . . . . . . . . . . . . . . .  122
  280.           File_path  . . . . . . . . . . . . . . . . . . . . . . . . .  123
  281.           File_rmargin . . . . . . . . . . . . . . . . . . . . . . . .  123
  282.           File_smart_tabs  . . . . . . . . . . . . . . . . . . . . . .  123
  283.           File_tabsize . . . . . . . . . . . . . . . . . . . . . . . .  124
  284.           File_timed . . . . . . . . . . . . . . . . . . . . . . . . .  124
  285.           File_w_height  . . . . . . . . . . . . . . . . . . . . . . .  124
  286.           File_w_left  . . . . . . . . . . . . . . . . . . . . . . . .  124
  287.  
  288.  
  289.  
  290.  
  291.           File_w_top . . . . . . . . . . . . . . . . . . . . . . . . .  124
  292.           File_w_width . . . . . . . . . . . . . . . . . . . . . . . .  124
  293.           File_wordwrap  . . . . . . . . . . . . . . . . . . . . . . .  124
  294.           File_x . . . . . . . . . . . . . . . . . . . . . . . . . . .  125
  295.           File_y . . . . . . . . . . . . . . . . . . . . . . . . . . .  125
  296.           Sys_autoindent . . . . . . . . . . . . . . . . . . . . . . .  125
  297.           Sys_autostrip  . . . . . . . . . . . . . . . . . . . . . . .  125
  298.           Sys_autotrail  . . . . . . . . . . . . . . . . . . . . . . .  125
  299.           Sys_backups  . . . . . . . . . . . . . . . . . . . . . . . .  125
  300.           Sys_bounce . . . . . . . . . . . . . . . . . . . . . . . . .  125
  301.           Sys_bspace . . . . . . . . . . . . . . . . . . . . . . . . .  126
  302.           Sys_carriage . . . . . . . . . . . . . . . . . . . . . . . .  126
  303.           Sys_cmode  . . . . . . . . . . . . . . . . . . . . . . . . .  126
  304.           Sys_cols . . . . . . . . . . . . . . . . . . . . . . . . . .  126
  305.           Sys_delete . . . . . . . . . . . . . . . . . . . . . . . . .  126
  306.           Sys_extensions . . . . . . . . . . . . . . . . . . . . . . .  126
  307.           Sys_fcount . . . . . . . . . . . . . . . . . . . . . . . . .  127
  308.           Sys_inmacro  . . . . . . . . . . . . . . . . . . . . . . . .  127
  309.           Sys_insmode  . . . . . . . . . . . . . . . . . . . . . . . .  127
  310.           Sys_mark_paste . . . . . . . . . . . . . . . . . . . . . . .  127
  311.           Sys_matching . . . . . . . . . . . . . . . . . . . . . . . .  127
  312.           Sys_mouse  . . . . . . . . . . . . . . . . . . . . . . . . .  127
  313.           Sys_para . . . . . . . . . . . . . . . . . . . . . . . . . .  127
  314.           Sys_rdefs  . . . . . . . . . . . . . . . . . . . . . . . . .  128
  315.           Sys_recording  . . . . . . . . . . . . . . . . . . . . . . .  128
  316.           Sys_rmargin  . . . . . . . . . . . . . . . . . . . . . . . .  128
  317.           Sys_rows . . . . . . . . . . . . . . . . . . . . . . . . . .  128
  318.           Sys_sdefs  . . . . . . . . . . . . . . . . . . . . . . . . .  128
  319.           Sys_smart_tabs . . . . . . . . . . . . . . . . . . . . . . .  128
  320.           Sys_tabsize  . . . . . . . . . . . . . . . . . . . . . . . .  129
  321.           Sys_timed  . . . . . . . . . . . . . . . . . . . . . . . . .  129
  322.           Sys_undo_many  . . . . . . . . . . . . . . . . . . . . . . .  129
  323.           Sys_word_delim . . . . . . . . . . . . . . . . . . . . . . .  129
  324.           Sys_wordwrap . . . . . . . . . . . . . . . . . . . . . . . .  129
  325.           Sys_zoom . . . . . . . . . . . . . . . . . . . . . . . . . .  129
  326.           Version  . . . . . . . . . . . . . . . . . . . . . . . . . .  129
  327.           Ws_size  . . . . . . . . . . . . . . . . . . . . . . . . . .  130
  328.  
  329.      Chess Execution Errors  . . . . . . . . . . . . . . . . . . . . .  131
  330.           Abort  . . . . . . . . . . . . . . . . . . . . . . . . . . .  131
  331.           Arguments  . . . . . . . . . . . . . . . . . . . . . . . . .  131
  332.           Bingo Intrinsic  . . . . . . . . . . . . . . . . . . . . . .  131
  333.           Class  . . . . . . . . . . . . . . . . . . . . . . . . . . .  131
  334.           Declaration  . . . . . . . . . . . . . . . . . . . . . . . .  131
  335.           Exec Interp  . . . . . . . . . . . . . . . . . . . . . . . .  131
  336.           Function Table Overflow  . . . . . . . . . . . . . . . . . .  131
  337.           Interpreter Parsing  . . . . . . . . . . . . . . . . . . . .  131
  338.           Left Brace . . . . . . . . . . . . . . . . . . . . . . . . .  131
  339.           Left-Value . . . . . . . . . . . . . . . . . . . . . . . . .  132
  340.           Link . . . . . . . . . . . . . . . . . . . . . . . . . . . .  132
  341.           Range  . . . . . . . . . . . . . . . . . . . . . . . . . . .  132
  342.           Right Paren  . . . . . . . . . . . . . . . . . . . . . . . .  132
  343.           Stack (Pop)  . . . . . . . . . . . . . . . . . . . . . . . .  132
  344.           Stack (Push) . . . . . . . . . . . . . . . . . . . . . . . .  132
  345.  
  346.  
  347.  
  348.  
  349.           Symbol . . . . . . . . . . . . . . . . . . . . . . . . . . .  132
  350.           Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . .  132
  351.           System Call  . . . . . . . . . . . . . . . . . . . . . . . .  132
  352.           System Variable  . . . . . . . . . . . . . . . . . . . . . .  133
  353.           Variable Table Overflow  . . . . . . . . . . . . . . . . . .  133
  354.  
  355.      Some Example Chess Code . . . . . . . . . . . . . . . . . . . . .  134
  356.           Example #1: Execute the Current File . . . . . . . . . . . .  134
  357.           Example #2: Factorials . . . . . . . . . . . . . . . . . . .  134
  358.  
  359.      The Included Chess Files  . . . . . . . . . . . . . . . . . . . .  135
  360.  
  361.      The Author  . . . . . . . . . . . . . . . . . . . . . . . . . . .  137
  362.  
  363.      Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .  138
  364.  
  365.      Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  139
  366.  
  367.  
  368.  
  369.  
  370.                                   Introduction
  371.                                   ------------
  372.  
  373.           This document serves as the reference manual for Bingo 3.10. 
  374.      Bingo is a full-featured text editor at the right price.  Some of its
  375.      features include:
  376.  
  377.      -    high speed execution, with particularly fast searches, screen
  378.           handling, and file I/O
  379.      -    virtual memory for file storage; up to 240 Megabytes of file
  380.           storage possible; XMS, EMS both supported.
  381.      -    CHESS C-like interpreted language giving you access to    
  382.           Bingo's powers in a true programmable language with looping,    
  383.           decision making, functions, variables and more.
  384.      -    multi level UNDO, allowing 'rollback' of changes to files
  385.      -    automatic or on-demand text recognition
  386.      -    custom define your own keyboard setup 
  387.      -    superb macro capability 
  388.      -    complete menu system supporting most Bingo functions 
  389.      -    multiple files, multiple windows: view different sections of the
  390.           same file, or different files at the same time
  391.      -    completely configurable
  392.      -    full color support       
  393.      -    programmable, integrated mouse support 
  394.      -    support of VGA, EGA, & MCGA extended text modes 
  395.      -    large suite of utility functions: entab; detab; shift; etc.  
  396.      -    execute DOS commands, including command-line compilers within
  397.           only ~3k of overhead
  398.      -    regular expression search and replace, within and across files.
  399.      -    use placemarks to mark positions in files 
  400.      -    extensive block operation support, include point, line and column
  401.           marking, and two different sets of block operations
  402.      -    27 independent paste buffers
  403.      -    wordwrap, paragraph formatting, and autoindent support included
  404.           for text processing work
  405.      -    2 C indentation Modes supports programming in the C programming
  406.           language
  407.      -    User-defined delimiter and indentation matching 
  408.      -    directory list picker 
  409.      -    both command line and dialogue box user interface paradigms 
  410.      -    print files & blocks through the serial port, parallel port, or
  411.           to a file, with or without line numbers
  412.      -    set printing left margin, top margin, and lines per page 
  413.      -    automatic processing of errors generated by most developmental
  414.           tools.  
  415.      -    execute any keystroke, Bingo function, or Chess function
  416.           "globally" over all files in the ring
  417.      -    profile files allow file extension specific settings.
  418.  
  419.  
  420.  
  421.  
  422.                            Bingo 3.10 Reference Manual
  423.                                         1
  424.  
  425.  
  426.  
  427.  
  428.      Philosophy
  429.      ----------
  430.  
  431.           It has now been over five years since I first conceived the basic
  432.      philosophy for Bingo; a fast, very capable editor for the person who
  433.      needs to really manipulate textual data.  
  434.           Like fire and the wheel are to civilization, compilers,
  435.      interpreters and editors are the underpinnings of the computer world. 
  436.      For anyone who wishes to deal with free-format files of text and
  437.      create code, it all begins with an editor.  Programmers *live* in
  438.      their editors, wearing them like a comfortable pair of jeans.  Power
  439.      users require a tool which can handle big files and perform a
  440.      multitude of unforseen tasks with aplomb.  And everyone requires an
  441.      environment we can tailor to our own taste.
  442.           It is against this backdrop that I created Bingo.  
  443.           Certainly, there are many other editors available.  But I believe
  444.      no other editor offers Bingo's combination of power, flexibility, and
  445.      value.  
  446.           There are many fast editors with configurable keyboards, nice
  447.      menus, and macros.  However, there are three features which set Bingo
  448.      a part from its brethren:
  449.  
  450.           - Virtual Memory: No other editor offers Bingo's extensive,
  451.           seamless support for files vastly larger than memory.  Using any
  452.           combination of Extended Memory, Expanded memory, and Disk, Bingo
  453.           easily handles files over 200 megabytes in size.
  454.  
  455.           - Undo: New with version 3.10, Bingo now features a multi-level
  456.           undo which can roll back any changes you make with no problem.
  457.  
  458.           - Interpreted Macro Language: In Chess, Bingo offers a simple yet
  459.           mature C-like processing language which supports looping, if-
  460.           then-else constructs, variables, and functions.  This allows for
  461.           the automation of complex tasks and the easy extension of Bingo's
  462.           basic functionality.
  463.  
  464.           While there are other editors available that offer one or two of
  465.      these three features, only Bingo combines them into one cohesive
  466.      whole.  In addition, Bingo is packed with time and effort saving
  467.      functions, such as:
  468.           - mouse support
  469.           - "repeat" any keystroke, Bingo command, or Chess function
  470.           - extensive searching and replacing, including regular expression
  471.           searching and searching across multiple files.
  472.           - line, point, and column block marking
  473.           - DOS access with a minimum of overhead.
  474.           - compiler error parsing
  475.      and many more.
  476.           I believe Bingo is a very capable tool, well suited to carry out
  477.      nearly any text file manipulation.  I hope you find it to be a
  478.      valuable addition to your software library!
  479.  
  480.                            Bingo 3.10 Reference Manual
  481.                                         2
  482.  
  483.  
  484.  
  485.  
  486.      The Association of Shareware Professionals
  487.      ------------------------------------------
  488.  
  489.           This program is produced by a member of the Association of
  490.      Shareware Professionals (ASP).  ASP wants to make sure that the
  491.      shareware principle works for you. If you are unable to resolve a
  492.      shareware-related problem with an ASP member by contacting the member
  493.      directly, ASP may be able to help. The ASP Ombudsman can help you
  494.      resolve a dispute or problem with an ASP member, but does not provide
  495.      technical support for members' products.  Please write to the ASP
  496.      Ombudsman at 545 Grover Road, Muskegon, MI 49442 or send a CompuServe
  497.      message via CompuServe Mail to ASP Ombudsman 70007,3536.
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536.  
  537.  
  538.                            Bingo 3.10 Reference Manual
  539.                                         3
  540.  
  541.  
  542.  
  543.  
  544.      The Shareware Concept and Registering
  545.      -------------------------------------
  546.           This is just a general note as to what Bingo being Shareware
  547.      means to you, the user.  Shareware could just as easily be called
  548.      "Honorware"; I depend upon you honor to mail in your payment for Bingo
  549.      if you are using it regularly.  All of the legal jargon describing
  550.      this Shareware concept is contained in the REGISTER.DOC file included
  551.      with Bingo.
  552.           Basically, I depend upon you to mail in your payment for Bingo
  553.      after you have taken a reasonable amount of time to try it out.  If
  554.      you use it regularly, please mail in the payment.  The number of man-
  555.      hours which went into Bingo is incredible; the registration fee is a
  556.      small price to pay. So if you use Bingo regularly, please send me the
  557.      registration fee I charge for Bingo -- it's not much money for a very
  558.      sharp program.
  559.           When you register, you are entitled to a number of advantages,
  560.      depending on how you register.  If your registration is a Single
  561.      Version registration ($40), these benefits include:
  562.           1) If you request it, I will mail you a copy of the current
  563.           release of Bingo free.
  564.           2) You are entitled to support for 9 months, or until 1 month
  565.           past the release of the next version, whichever is longer.
  566.      If your registration is a Lifetime registration ($75), your benefits
  567.      are a little more extensive.  They include:
  568.           1) If you request it, I will mail you a copy of the current
  569.           release of Bingo free.
  570.           2) You are entitled to support for as long as Bingo is marketed
  571.           as a product, be it as shareware or commercial.
  572.           3) The next release will be mailed to you free of charge.
  573.           4) You will be notified of each successive release, and each will
  574.           be available to you for a mere $5.00 shipping fee.
  575.  
  576.           In addition, registered users of any sort get to have their named
  577.      emblazoned on their copy for all to see;  this way everyone will know
  578.      what honorable people they are.  And no, a simple sector editor cannot
  579.      change this name -- it has to be done here.  The name will be shown on
  580.      the initial screen which is popped up when Bingo is executed, and can
  581.      also be accessed from the 'version_info' function.
  582.           Also, some registered users are able to beta-test upcoming
  583.      versions -- a double-edged sword.  Beta testing is somewhat precarious
  584.      at times, but you do get to take a hand in forming the next version. 
  585.      Plus you get to have your complaints redressed faster than the general
  586.      public.
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.                            Bingo 3.10 Reference Manual
  597.                                         4
  598.  
  599.  
  600.  
  601.  
  602.      Ordering Bingo
  603.      --------------
  604.  
  605.      Direct from Me
  606.      --------------
  607.  
  608.           You can order directly from me at the below address:
  609.  
  610.                        Christopher R. S. Schanck
  611.                        PO Box 279
  612.                        Hanover MD 21076
  613.                        (410) 379-9019
  614.  
  615.  
  616.      PsL Shareware Registration
  617.      --------------------------
  618.  
  619.           You can register from Public (software) Library with your MC,
  620.      Visa, AmEx or Discover card by calling 800-2424-PsL or 713-524-6394 or
  621.      by FAX to 713-524-6398 or by CompuServe to 71355,470 or by mail to
  622.      PsL, PO Box 35705, Houston, Texas 77235-5705.  Bingo's order number is
  623.      10399.  Please use this order number when ordering if possible.  These
  624.      numbers are for ordering *only*.  For information about dealer
  625.      pricing, volume discounts, site licensing, shipping of product,
  626.      returns, latest version number or other technical information, contact
  627.      me directly at the above address.  I repeat, please
  628.  
  629.                               *** DO NOT ***
  630.  
  631.      call PsL for anything other than to place an order -- they will not be
  632.      able to help you.
  633.  
  634.      Compuserve Online Registration
  635.      ------------------------------
  636.  
  637.           You can register the Lifetime version of Bingo online via the
  638.      Compuserve Information Service.  To do this GO SWREG to the Software
  639.      Registration Service.  Bingo's Registration ID is #411.  When you
  640.      register this way I am notified within one (1) day and mail your copy
  641.      directly to you.  Your Compuserve account will be charged the
  642.      registration fee.
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.                            Bingo 3.10 Reference Manual
  655.                                         5
  656.  
  657.  
  658.  
  659.  
  660.      Things to Possibly Come
  661.      -----------------------
  662.           For some time, a goal was implementing a full procedural
  663.      language.  Earlier last year (12/91) I began prototyping a full
  664.      procedural interpreter which was to be integrated into Bingo.  I was
  665.      very pleased to announce the Chess procedural language as an integral
  666.      part of Bingo starting with version 3.00.  Chess is a very powerful,
  667.      if minimalistic, C-like language complete with looping, if-then-else
  668.      statements, variables, functions, and more.  You can interrogate Bingo
  669.      for its current status, and ask the user for a variety of input.  
  670.           For version 3.10, several of my prior goals have been met.  In
  671.      particular I have added a multi-level undo function.  This is a very
  672.      powerful function which adds another safety net for you, the user. 
  673.      This will be expanded into a redo function as well in the near future.
  674.           So what remains?  Plenty; I still really want to add customizable
  675.      menus to Bingo; even more so with addition of Chess, this seems to me
  676.      to be a very important addition.  Plus, the longer people use Chess,
  677.      the more functionality they think of to add, so extending Chess is an
  678.      ongoing proposition.
  679.           Also, I have been giving serious thought to porting Bingo to the
  680.      OS/2 environment.  OS/2 is a very powerful environment with a lot to
  681.      offer both users and developers.
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.                            Bingo 3.10 Reference Manual
  713.                                         6
  714.  
  715.  
  716.  
  717.  
  718.      Support
  719.      -------
  720.  
  721.           As any of my registered users will tell you, I am committed to
  722.      supporting Bingo.  Without my users, where would I be?  Anyone,
  723.      registered or not, who calls or writes me will receive prompt and
  724.      (hopefully) useful help.  I particularly like to hear of requests;
  725.      anything you would like to see in Bingo, let me know.  One of my beta-
  726.      testers remarked that he felt like he had a personal editor --
  727.      anything he wanted was added.
  728.  
  729.      US Mail Contact
  730.      ---------------
  731.           The address and phone number to contact me at is:
  732.  
  733.           Christopher Schanck
  734.           PO Box 279
  735.           Hanover MD 21076
  736.           (410) 379-9019
  737.  
  738.           PLEASE feel free to contact me.  I very much like to hear from
  739.      you!  
  740.  
  741.      CompuServe Contact
  742.      ------------------
  743.           You will get the quickest response from me via Compuserve.  You
  744.      can contact me there as:
  745.           70541,3614
  746.      On the Internet, that would be:
  747.           70541.3614@compuserve.com
  748.  
  749.      Internet Contact
  750.      ----------------
  751.           You will get very quick response from me via Internet E-mail. 
  752.      You can contact me there as:
  753.  
  754.           cschanck@access.digex.net
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.                            Bingo 3.10 Reference Manual
  771.                                         7
  772.  
  773.  
  774.  
  775.  
  776.      Getting the Latest Version
  777.      --------------------------
  778.           If you have a copy of Bingo but are not sure if it is the latest
  779.      version, the best way to find out is by calling the Computer
  780.      Connection BBS in Washington DC.  This is a very large, well-managed
  781.      BBS.  The latest version of Bingo will always be available here, and
  782.      E-Mail left for me will be answered.  The number is (202) 547-2008.  
  783.           Another way to assure yourself is to check on Compuserve, in the
  784.      IBMAPP forum, Text Editor section, generally named BE???.ZIP.
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.  
  800.  
  801.  
  802.  
  803.  
  804.  
  805.  
  806.  
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826.  
  827.  
  828.                            Bingo 3.10 Reference Manual
  829.                                         8
  830.  
  831.  
  832.  
  833.  
  834.      Using this Manual
  835.      -----------------
  836.           This manual is broken into four parts.  The first is an overview
  837.      of Bingo itself, including topics such as customization.
  838.           The second section consists of sections on each major
  839.      functionality present in Bingo.  These individual sections are not
  840.      tutorial in orientation, but rather give necessary information needed
  841.      to utilize this functionality.  Each section has both a narrative
  842.      section and a function reference.
  843.           The third section is a overview and introduction to the Chess
  844.      procedural language, covering things like syntax and rules.  The final
  845.      section is the library reference for Chess.
  846.           I suggest that the first time user first read the initial
  847.      sections for pertinent information, then go through the function
  848.      summary thoroughly.  This will give you a clear idea of the
  849.      capabilities of Bingo.  Reading the third section will familiarize you
  850.      with the capabilities of the Chess language.
  851.           Finally, *please* read the README.DOC file very carefully.  In
  852.      some cases it will have information this file doesn't contain, and it
  853.      may describe some things in greater detail as it is kept as a running
  854.      log as I make changes.
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.  
  866.  
  867.  
  868.  
  869.  
  870.  
  871.  
  872.  
  873.  
  874.  
  875.  
  876.  
  877.  
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884.  
  885.  
  886.                            Bingo 3.10 Reference Manual
  887.                                         9
  888.  
  889.  
  890.  
  891.  
  892.                                     Overview
  893.                                     --------
  894.  
  895.      Installing Bingo
  896.      ----------------
  897.           There are 2 files which are of critical importance for Bingo to
  898.      run. 
  899.           BE.EXE is the executable.  If you dislike typing 'be' at the DOS
  900.      command, you CAN rename Bingo's executable.  One point to remember,
  901.      don't invoke the .EXE file directly. 
  902.           KEYCFG.SET is the compiled keyboard definition file.  This needs
  903.      to be in the same directory as BE.EXE, or in the current directory.
  904.           Without these two files, BE.EXE and KEYCFG.SET, Bingo will not
  905.      start.
  906.           There is another file which is useful but not mandatory for Bingo
  907.      to run.  BINGO.INI, in either the current directory or in same
  908.      directory as BE.EXE.
  909.           The help file BINGO.HLP, is an additional file which must be in
  910.      the same subdirectory as BE.EXE if you wish to use it.  When you
  911.      invoke help, Bingo will look there for the file BINGO.HLP.  The file
  912.      may contain your own description of the current key layout, or just
  913.      about anything else you would like.  Bingo comes with a default help
  914.      file.
  915.           As an example, assume the Bingo distribution files are contained
  916.      on floppy disk on drive A:, and you are installing Bingo on drive C:. 
  917.      First, move to drive C: and create a directory for bingo, called
  918.      \bingo using DOS's mkdir command.  Move to this subdirectory using 'cd
  919.      \bingo'.  Now copy the files from drive A: over to the proper
  920.      subdirectory by using 'copy A:*.* C:\BINGO'.
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933.  
  934.  
  935.  
  936.  
  937.  
  938.  
  939.  
  940.  
  941.  
  942.  
  943.  
  944.                            Bingo 3.10 Reference Manual
  945.                                        10
  946.  
  947.  
  948.  
  949.  
  950.      BOPTS: The External Configuration Utility
  951.      -----------------------------------------
  952.           While most of Bingo's options are configurable from within Bingo
  953.      itself, for certain technical reasons some are not.  BOPTS is a
  954.      utility which allows you to set these.  To run BOPTS, use
  955.  
  956.           BOPTS
  957.  
  958.      and BOPTS will look for the file BE.EXE in the current directory. 
  959.      Using:
  960.  
  961.           BOPTS <executable name>
  962.  
  963.      and BOPTS will look for the name you give it.
  964.           BOPTS will allow you to alter several key attributes affecting
  965.      the way Bingo runs.  This section will detail what those options are,
  966.      and what they can do for you.
  967.           BOPTS will modify the BE.EXE executable directly, so if you are
  968.      going to compress it with one of the several popular utilities which
  969.      do so, beware, you will have to uncompress it for BOPTS to work. 
  970.      Also, if you have anti-virus programs, they will probably complain
  971.      about BOPTS modifying BE.EXE as well.  
  972.           The good news is that the settings controlled by BOPTS are of a
  973.      nature that you will not have to set them often.
  974.  
  975.      Number of Buckets and Bucket Size
  976.      ---------------------------------
  977.           The first two options are the number of virtual memory 'buckets'
  978.      Bingo allocates space for upon start up, and the second is the 'size'
  979.      of each virtual-memory bucket.  In short, the *number* of buckets (up
  980.      to 15k) multiplied by the *size* of each bucket (up to 16k) determines
  981.      the maximum theoretical memory limit.  For a full discussion of how
  982.      these two parameters impact performance, see the section on Virtual
  983.      Memory.
  984.  
  985.      Chess Stack Size
  986.      ----------------
  987.           This option controls the number of items Bingo allocates room for
  988.      Chess subprograms to use on the Chess stack.  Since all Chess
  989.      subprograms share a common stack, this can be important.  In heavily
  990.      recursive pieces of code, increasing this can be very important. 
  991.  
  992.      Chess Number of Variables
  993.      -------------------------
  994.           This dictates what the maximum number of Variables Bingo
  995.      allocates handles for on start up.  
  996.  
  997.      Chess Number of Functions
  998.      -------------------------
  999.           This dictates what the maximum number of Functions Bingo
  1000.      allocates handles for on start up.  
  1001.  
  1002.                            Bingo 3.10 Reference Manual
  1003.                                        11
  1004.  
  1005.  
  1006.  
  1007.  
  1008.      Scramble Registration Name
  1009.      --------------------------
  1010.           This option will allow you to scramble the registration name in a
  1011.      copy of BE.EXE.  This will blank out the current registration name. 
  1012.      This is included so that people who have registered copies and wish to
  1013.      pass them along can expunge their name from the executable.
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.                            Bingo 3.10 Reference Manual
  1061.                                        12
  1062.  
  1063.  
  1064.  
  1065.  
  1066.      Bingo and Virtual Memory
  1067.      ------------------------
  1068.           In version 2.10, Bingo introduced a virtual memory paradigm to
  1069.      allow programmers to edit more and larger files.  Virtual memory is a
  1070.      simple, elegant, beautiful concept in the abstract; the reality, on an
  1071.      MS-DOS based PC, is a very hairy beasty indeed.  Many different
  1072.      methods for implementing virtual memory were examined.  The one I
  1073.      settled on seems a good compromise; Bingo is still very quick, and the
  1074.      memory/disk swapping necessary when you are working with large files
  1075.      is relatively unobtrusive.  
  1076.           Bingo treats file storage as a set of fixed length blocks.  As
  1077.      shipped, Bingo is generally configured for 4096 byte-sized blocks, or
  1078.      4k.  Internally, Bingo can deal with up to 16k of these blocks, or
  1079.      *buckets*, configurable from 1k to 16k.  The bucket *size* is the size
  1080.      of each block and is configurable from 2k to 16k.  The larger the
  1081.      bucket size, the more blocks (or buckets) allocated the higher the
  1082.      theoretical memory limit.  For instance, a bucket size of 16k with 8k
  1083.      buckets gives a theoretical memory limit of 128 Megabytes!  So why not
  1084.      just set the limits way up and be done with it?
  1085.           Two reasons.  First, the larger the bucket size, the harder Bingo
  1086.      works to manipulate text.  On faster machines, larger bucket sizes are
  1087.      fine; on a 386/25 Mhz PC, a 16k bucket size is no problem at all.  On
  1088.      the other hand, a 2k bucket size is fine on every machine out there. 
  1089.           The more buckets allocated, the less conventional memory Bingo
  1090.      has available for use.  So allocating a lot more than you need is non-
  1091.      optimal use of your resources.
  1092.           Second, let's be serious about this.  Seldom, if ever, will
  1093.      someone really need to edit a file 200+ Megs in size.  Could happen;
  1094.      that is why I coded it as I did.  But still.  Also, do the arithmetic. 
  1095.      To edit a 200M file, you need roughly > 400M of disk storage; 200M for
  1096.      the file itself, + 200M for the swapfile, + some odd number of bytes
  1097.      for the file entries in the FAT table (grin).  Not a lot of systems
  1098.      around with several hundred megs of storage hanging about.  But we
  1099.      plan for the future.
  1100.           You can change the Bucket Size and Number of Buckets via the
  1101.      BOPTS utility.
  1102.           With version 3.10, Bingo now makes use of Expanded (EMS) memory
  1103.      and Extended (XMS) memory in 256k chunks.  Depending on the setting of
  1104.      the 'conf_vmem' function, you can choose in which order this memory
  1105.      will be used.  Bingo makes use of EMS version 3.00 or above; XMS
  1106.      version 2.00 or above.
  1107.  
  1108.      Impact of Virtual Memory on Performance
  1109.      ---------------------------------------
  1110.           Virtual memory has had a measurable impact on Bingo's performance
  1111.      in a number of areas.  Users coming from version 2.01 or earlier will
  1112.      appreciate this discussion of differences.  
  1113.           On the downside, general editing is, in my estimation, a touch
  1114.      slower.  Searches, scrolling, block operations, etc.  On the other
  1115.      hand,  the only machine I can tell the difference on is an ancient
  1116.      8088; use an AT-class machine, and you can't see a difference. 
  1117.  
  1118.                            Bingo 3.10 Reference Manual
  1119.                                        13
  1120.  
  1121.  
  1122.  
  1123.  
  1124.      However, even on the 8088, things are by no means slow; searches and
  1125.      such are still very quick.
  1126.           One function in particular is much slower.  When you sort a
  1127.      block, things are much, *much* slower in this version.  This is not so
  1128.      much a consequence of the virtual memory per se, but of the new memory
  1129.      structure.  In version 2.01 and earlier, sorting was done with a
  1130.      recursive algorithm (N log N bound), and swapping lines meant swapping
  1131.      pointers only.  In version 2.10, a stack-based sort is not acceptable,
  1132.      because with a large file you could corrupt the stack.  So the
  1133.      excellent CombSort algorithm (April 1991 BYTE) was used instead.  This
  1134.      algorithm approximates N log N time, but is ultimately slower.  The
  1135.      real speed killer, however, is that I can no longer simply swap
  1136.      pointers.  Instead, I have to physically move the lines themselves
  1137.      around.  This is slow, slow, slow, pushing the sort time way, way up. 
  1138.      But I did not want to eliminate sorting entirely.  I use it too much
  1139.      to give up.
  1140.           On the upside, obviously, you can edit humongous files with ease,
  1141.      and a virtually unlimited number of files.  This is an obvious
  1142.      improvement.
  1143.  
  1144.  
  1145.  
  1146.  
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.                            Bingo 3.10 Reference Manual
  1177.                                        14
  1178.  
  1179.  
  1180.  
  1181.  
  1182.      KEYCFG: The Keyboard Configuration Program
  1183.      ------------------------------------------
  1184.           KEYCFG is the program used to create a keyboard configuration
  1185.      which the Bingo executable can utilize.  KEYCFG also allows you to
  1186.      embed Chess code (Bingo's procedural language) into a .SET file and
  1187.      assigned code subprograms to keys. The supplied configuration files
  1188.      (BINGO.CFG, EMACS.CFG, possibly others) give a good example of how to
  1189.      set up the file.
  1190.           Using Chess code in Bingo is covered thoroughly in the Chess
  1191.      manual, so this section will give a quick rundown on using Chess with
  1192.      Keycfg.
  1193.  
  1194.           KEYCFG is invoked as follows:
  1195.  
  1196.                KEYCFG <configuration name> <keyset file name>
  1197.  
  1198.      <configuration name> is the name of the text configuration source file
  1199.      you wish KEYCFG to read, and <keyset file name> is the name you wish
  1200.      KEYCFG to write the compiled keyboard setup to.  The default keyset
  1201.      file which Bingo looks for on start up is KEYCFG.SET.  Bingo will look
  1202.      first in the current directory, then in Bingo's own home directory. 
  1203.      Alternate keyset files can be loaded from within Bingo using the
  1204.      'key_set_load' function.
  1205.  
  1206.      Key Names
  1207.      ---------
  1208.           KEYCFG's primary job is to assign functionality to keystrokes or
  1209.      combinations of keystrokes.  As such, it is important to know the
  1210.      possible key names.  The keys follow the following patterns:
  1211.  
  1212.      f1-f12    are the function keys
  1213.      !f1-!f12  are the shifted function keys
  1214.      @f1-@f12  are the control function keys
  1215.      #f1-#f12  are the alt function keys
  1216.      @<key>    is the control-<key> combination
  1217.      #<key>    is the alt-<key> combination
  1218.      <key>     is a simple key, named key, or a mouse event.
  1219.  
  1220.      These are named keys:
  1221.  
  1222.           alt_backspace                      alt_grey_right_arrow
  1223.           alt_equal                          alt_grey_up_arrow
  1224.           alt_escape                         alt_keypad_aster
  1225.           alt_grey_delete                    alt_keypad_divide
  1226.           alt_grey_down_arrow                alt_keypad_minus
  1227.           alt_grey_end                       alt_keypad_plus
  1228.           alt_grey_home                      alt_keypad_return
  1229.           alt_grey_insert                    alt_minus
  1230.           alt_grey_left_arrow                alt_return
  1231.           alt_grey_pgdn                      alt_tab
  1232.           alt_grey_pgup                      backspace
  1233.  
  1234.                            Bingo 3.10 Reference Manual
  1235.                                        15
  1236.  
  1237.  
  1238.  
  1239.  
  1240.           backtab                            keypad_plus
  1241.           ctrl_backspace                     keypad_return
  1242.           ctrl_delete                        left_arrow
  1243.           ctrl_down_arrow                    pgdn
  1244.           ctrl_end                           pgup
  1245.           ctrl_grey_delete                   return
  1246.           ctrl_grey_down_arrow               right_arrow
  1247.           ctrl_grey_end                      shift_delete
  1248.           ctrl_grey_home                     shift_down_arrow
  1249.           ctrl_grey_insert                   shift_end
  1250.           ctrl_grey_left_arrow               shift_home
  1251.           ctrl_grey_pgdn                     shift_insert
  1252.           ctrl_grey_pgup                     shift_keypad_5
  1253.           ctrl_grey_right_arrow              shift_left_arrow
  1254.           ctrl_grey_up_arrow                 shift_pgdn
  1255.           ctrl_home                          shift_pgup
  1256.           ctrl_insert                        shift_right_arrow
  1257.           ctrl_keypad_5                      shift_up_arrow
  1258.           ctrl_keypad_aster                  tab
  1259.           ctrl_keypad_divide                 up_arrow
  1260.           ctrl_keypad_minus
  1261.           ctrl_keypad_plus                   Note:  The key names with
  1262.           ctrl_keypad_return                 'grey' in them, as well as
  1263.           ctrl_left_arrow                    F11, F12, and several others,
  1264.           ctrl_minus                         denote keys which are
  1265.           ctrl_pgdn                          available only if you have an
  1266.           ctrl_pgup                          extended keyboard, and you
  1267.           ctrl_return                        have the 'Use Extended
  1268.           ctrl_right_arrow                   Keyboard Bios' option turned
  1269.           ctrl_tab                           on.
  1270.           ctrl_up_arrow
  1271.           delete
  1272.           down_arrow
  1273.           end
  1274.           escape
  1275.           grey_delete
  1276.           grey_down_arrow
  1277.           grey_end
  1278.           grey_home
  1279.           grey_insert
  1280.           grey_left_arrow
  1281.           grey_pgdn
  1282.           grey_pgup
  1283.           grey_right_arrow
  1284.           grey_up_arrow
  1285.           home
  1286.           insert
  1287.           keypad_5
  1288.           keypad_aster
  1289.           keypad_divide
  1290.           keypad_minus
  1291.  
  1292.                            Bingo 3.10 Reference Manual
  1293.                                        16
  1294.  
  1295.  
  1296.  
  1297.  
  1298.           These are the mouse events:
  1299.  
  1300.           Three_buttons
  1301.           Left_right_buttons
  1302.           Left_middle_buttons
  1303.           Multiple_left_button
  1304.           Single_left_button
  1305.           Right_middle_buttons
  1306.           Multiple_right_button
  1307.           Single_right_button
  1308.           Multiple_middle_button
  1309.           Single_middle_button
  1310.           Single_up_arrow
  1311.           Single_down_arrow
  1312.           Single_left_arrow
  1313.           Single_right_arrow
  1314.           Single_pyramids
  1315.           Multiple_up_arrow
  1316.           Multiple_down_arrow
  1317.           Multiple_left_arrow
  1318.           Multiple_right_arrow
  1319.           Multiple_pyramids
  1320.  
  1321.  
  1322.           The configuration file itself consists of two sections:
  1323.  
  1324.      Section 1 -- Key Assignments
  1325.      ----------------------------
  1326.      The first is any number of lines of key assignments of one of the
  1327.      following formats:
  1328.  
  1329.           a)   <key specifier> <function identifier>
  1330.           b)   <key specifier> macro <macro list>
  1331.           c)   <key specifier> <character>
  1332.           d)   ; <comment text>
  1333.  
  1334.                A line starting with a space is a continuation of the
  1335.                previous line.
  1336.  
  1337.           <key specifier> is either a simple <key name>, or two key names
  1338.      strung together as <key name>+<key name>, or three key names strung
  1339.      together as <key_name>+<key_name>+<key_name>.  For instance, for you
  1340.      Wordstar people, control-k q would be entered as '@k+q'  (Note: in
  1341.      this case, the Bingo will recognize both the sequence @k+q and @k+Q as
  1342.      the same thing -- case is not significant.)
  1343.  
  1344.  
  1345.  
  1346.  
  1347.  
  1348.  
  1349.  
  1350.                            Bingo 3.10 Reference Manual
  1351.                                        17
  1352.  
  1353.  
  1354.  
  1355.  
  1356.           The <macro list> is a list of 0 or more function descriptors, as
  1357.      listed in the Function Summary section, and 0 or more literal
  1358.      occurrences, and 0 or more named keys, in any order.  The literals
  1359.      must be enclosed in single quotes.  The literals will occur in the
  1360.      macro exactly as if they had been typed.  For instance, the line
  1361.           f1    macro 'Chris' return
  1362.      would define the f1 key as my name followed by a return.
  1363.           The <character> is any printable ASCII character, entered without
  1364.      quotes.  For instance, 
  1365.           <    ,
  1366.      would redefined the less-than symbol to be the comma.  This
  1367.      translation will occur during general editing, as well as in the
  1368.      search and replace string-entry boxes.  Everywhere else it will be
  1369.      ignored.
  1370.           The following macro would define the Alt-C key to save all
  1371.      current modified files, execute the make command while swapping Bingo
  1372.      out to disk, saving the errors in the ERRS file, then load the ERRS
  1373.      file.
  1374.           #c        macro save_all swap_execute 'make > errs' return return
  1375.                     load_file 'errs.' return
  1376.           A more interesting variant of this is the one I used prior to
  1377.      installing the auto-error processing:
  1378.           #c        macro modify_save_all swap_execute 'make > errs' return
  1379.                     return window_bottom load_file 'errs.' return
  1380.      This version will attempt to put the errors file in the bottom-most
  1381.      window, and it will initially only save those files as have been
  1382.      modified.
  1383.           After adding  the auto-error processing, I added a more complex
  1384.      version of this macro:
  1385.           #c        macro modify_save_all 
  1386.                     swap_execute 'make > errs' return return 
  1387.                     window_one window_split 
  1388.                     load_file 'errs.' return 
  1389.                     window_previous 
  1390.                     window_resize down_arrow down_arrow down_arrow
  1391.                          down_arrow down_arrow down_arrow return
  1392.                     setup_err_parse 'errs.' return 
  1393.                     return next_error
  1394.      This version saves all modified files, executes MAKE as before, and
  1395.      returns.  When it returns, it makes sure there is but one window,
  1396.      splits the current window, and loads in the ERRS file.  It then
  1397.      resizes it so the bottom window is smaller, resets the error parsing
  1398.      to the ERRS file, then searches for the next (first) error.
  1399.           This last version is very sweet to use if you have a compiler
  1400.      which generates agreeable error files.  Bingo will work with most
  1401.      compilers I have come across, including the Borland and Microsoft
  1402.      compilers/assemblers.  With the Microsoft tools, you may have to tweak
  1403.      the compile flags a bit to get a usable format.  
  1404.           Since adding Chess to Bingo, I have been using a set of Chess
  1405.      functions to manage compiling and error parsing (see the COMPILE.CHS
  1406.      file for an example of how to do this).
  1407.  
  1408.                            Bingo 3.10 Reference Manual
  1409.                                        18
  1410.  
  1411.  
  1412.  
  1413.  
  1414.      'open_end' Key Identifier
  1415.      -------------------------
  1416.           KEYCFG allows the use of the 'open_end' identifier in macros to
  1417.      force Bingo to fetch string input from the keyboard.  For example:
  1418.           f1   macro search open_end 'i' return
  1419.      will execute the search function, wait for the user to input the
  1420.      target string, then input 'i' for the search modifier and do the
  1421.      search.
  1422.           'open_end' is effective only for string input --- single key
  1423.      input situations will not respond to it.  In effect, 'open_end' is a
  1424.      very special key name.
  1425.  
  1426.      'cur_file' Key Identifier
  1427.      -------------------------
  1428.           KEYCFG also allows the use of the 'cur_file' identifier in macros
  1429.      to expand into the current file's name (less path) in string input. 
  1430.      For example:
  1431.           f1   macro load_file cur_file return
  1432.      will force the reload of the current file, providing it is located in
  1433.      the current directory.
  1434.  
  1435.      Using Chess functions
  1436.      ---------------------
  1437.           Any function which is not recognized as being a Bingo internal
  1438.      function is assumed to be a Chess function.  For example:
  1439.  
  1440.           #z        hello_world()
  1441.  
  1442.      would tie Alt-Z to the 'hello_world' Chess function.
  1443.  
  1444.      Section 2 - Chess Code
  1445.      ----------------------
  1446.      The second section of a .CFG file is the section of Chess code.  To
  1447.      signal KEYCFG that this section has been reached, use the token
  1448.      'chess-begin' on a line by itself.  The token 'chess-end' signals the
  1449.      end of this section.  All text between these tokens will be
  1450.      interpreted as Chess code.  See the manual on the Chess procedural
  1451.      language for a further explanation.
  1452.  
  1453.      KEYCFG Command Line Options
  1454.      ----------------------------
  1455.           KEYCFG recognizes three command line options.  One is a shortcut:
  1456.  
  1457.           keycfg !
  1458.  
  1459.      tells KEYCFG to assume the name of the configuration file is
  1460.      BINGO.CFG, and that the keyset file is KEYCFG.SET.  I put this in
  1461.      primarily for my own use, as I run KEYCFG often during development.
  1462.  
  1463.           'KEYCFG names' will provide an alphabetical list of all of the
  1464.      function names which are currently recognized.  Useful to have.
  1465.  
  1466.                            Bingo 3.10 Reference Manual
  1467.                                        19
  1468.  
  1469.  
  1470.  
  1471.  
  1472.  
  1473.           Likewise 'KEYCFG keys' will list all recognized key names and
  1474.      mouse events.  Also useful to have.
  1475.  
  1476.  
  1477.  
  1478.  
  1479.  
  1480.  
  1481.  
  1482.  
  1483.  
  1484.  
  1485.  
  1486.  
  1487.  
  1488.  
  1489.  
  1490.  
  1491.  
  1492.  
  1493.  
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.  
  1500.  
  1501.  
  1502.  
  1503.  
  1504.  
  1505.  
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.                            Bingo 3.10 Reference Manual
  1525.                                        20
  1526.  
  1527.  
  1528.  
  1529.  
  1530.      The KEYINFO Key Information Utility
  1531.      -----------------------------------
  1532.           KEYCFG takes plain text key definitions and 'compiles' them into
  1533.      .SET file format, KEYINFO takes a .SET file and turns it into its
  1534.      plain-text equivalent.  Further, KEYINFO can take a saved Single-Key
  1535.      macro and turn it into its plain-text format.  This means that you can
  1536.      define a macro on the fly and get it converted back to its text format
  1537.      where you can tune it to your heart's content.
  1538.  
  1539.           KEYINFO can be invoked two ways.  First, to turn a .SET file into
  1540.      its text equivalent, use:
  1541.  
  1542.           KEYINFO <.SET file name>
  1543.  
  1544.      To turn a saved macro file into its text equivalent, use:
  1545.  
  1546.           KEYINFO -s <macro file name>
  1547.  
  1548.  
  1549.  
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560.  
  1561.  
  1562.  
  1563.  
  1564.  
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570.  
  1571.  
  1572.  
  1573.  
  1574.  
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  
  1582.                            Bingo 3.10 Reference Manual
  1583.                                        21
  1584.  
  1585.  
  1586.  
  1587.  
  1588.      Starting Bingo
  1589.      --------------
  1590.           Starting Bingo is simple.  Simply type:
  1591.  
  1592.                be <filespec> <filespec> ...
  1593.                be.exe <filespec> <filespec> ...
  1594.  
  1595.      at the DOS prompt, and you are off.  One of several things will
  1596.      happen.  If each file name you gave is discreet (i.e., no wild cards),
  1597.      the files named will each be loaded, one after another.  If a filespec
  1598.      matches more than one file, a directory list of matching files will
  1599.      pop up which will allow you to choose a file or files.  See the
  1600.      section on the Directory List for further explanation.
  1601.           If no filespec is given, Bingo will behave as if you issued 'be
  1602.      *.*'.
  1603.  
  1604.           You may also specify the starting line and column position for
  1605.      the each loaded file.  The '/pLL:CC' switch allows you to do this. 
  1606.      For example:
  1607.  
  1608.           be test.doc test2.doc /p10:5 /p20
  1609.  
  1610.      would load the file TEST.DOC and move to the 10th line, 5th column. 
  1611.      TEST2.DOC would begin on the 20th line.  If you do not give a column
  1612.      argument, the first column will be assumed.  
  1613.  
  1614.           You can use the '-x<file name>' switch to run a recorded macro
  1615.      file on start up.  For example:
  1616.  
  1617.           be test.doc test2.doc -xfun1.mac
  1618.  
  1619.      would load both files, then execute the macro file FUN1.MAC inside the
  1620.      buffer holding TEST.DOC.
  1621.  
  1622.           You can use the '-c<file name>' switch to run a CHESS command
  1623.      file on start up.  For example:
  1624.  
  1625.           be test.doc test2.doc -cfun1.chs
  1626.  
  1627.      would load both files, then execute the CHESS program file FUN1.CHS
  1628.      inside the buffer holding TEST.DOC.
  1629.  
  1630.  
  1631.  
  1632.  
  1633.  
  1634.  
  1635.  
  1636.  
  1637.  
  1638.  
  1639.  
  1640.                            Bingo 3.10 Reference Manual
  1641.                                        22
  1642.  
  1643.  
  1644.  
  1645.  
  1646.      The BINGO.INI file
  1647.      ------------------
  1648.           With version 2.11a, Bingo's configuration settings are stored in
  1649.      a file called BINGO.INI.  When Bingo starts up, it will look first in
  1650.      the local directory, then in BE.EXE's execution directory.  If it is
  1651.      found in neither of these places, you will not be notified and Bingo
  1652.      will run with the default settings it is shipped with.  To create
  1653.      BINGO.INI, use the 'save_settings' function.
  1654.           Moving the settings to a separate file means that the settings
  1655.      and the key configurations are held in 2 separate files.  This allows
  1656.      you to effortlessly use executable compression programs such as LZEXE
  1657.      (TM) and PKLite (TM) to compress BE.EXE; no longer is BE.EXE in the
  1658.      habit of modifying itself.
  1659.           With version 3.10, BINGO.INI is now a plain-text ASCII file,
  1660.      editable by Bingo itself.  Normally, you use the 'save_settings'
  1661.      function to create this file -- the reason it was altered to an ASCII
  1662.      format was to facilitate Bingo upgrades.  The settings are of the
  1663.      form:
  1664.  
  1665.      &<setting name>=<value>
  1666.  
  1667.      The ampersand (&) character must be in the first column.  Any line
  1668.      with anything other than an & in the first column will be treated as a
  1669.      comment line.  Generally, the possible <values> are:
  1670.  
  1671.           TRUE/FALSE               1/0
  1672.           Integer Range            0-???? (the upper range is dependent
  1673.                                    upon the setting.
  1674.           String                   <character string>
  1675.  
  1676.      These are the available settings:
  1677.  
  1678.           &Auto_cut      'conf_auto_cut'               T/F
  1679.      *    &Autoindent    autoindent mode               T/F
  1680.           &Automark      auto marking                  T/F
  1681.           &Autostrip     8th bit stripping             T/F
  1682.           &Autotrail     trail space clipping          T/F
  1683.           &Backups       backup extension char         string
  1684.           &Bottom_marg   bottom margin                 0-256
  1685.           &Bounce_curs   bounce cursor                 T/F
  1686.           &Box_shadow    shadow boxes                  T/F
  1687.      *    &Bspace_mode   backspace mode                0-3
  1688.           &Buf_to_stack  cut to stack                  T/F
  1689.           &Chess_trace   chess tracing                 T/F
  1690.      *    &Cmode         C mode indention              0-2
  1691.           &Col_bbord     box border color              <color>
  1692.           &Col_bchar     box highlight char color      <color>
  1693.           &Col_btext     box text color                <color>
  1694.           &Col_cur_l     current line color            <color>
  1695.           &Col_dial      cmd line dialogue color       <color>
  1696.           &Col_eob       end of buffer color           <color>
  1697.  
  1698.                            Bingo 3.10 Reference Manual
  1699.                                        23
  1700.  
  1701.  
  1702.  
  1703.  
  1704.           &Col_high      highlight text color          <color>
  1705.           &Col_mbar      menubar color                 <color>
  1706.           &Col_norm      normal text color             <color>
  1707.           &Col_over      overscan color                <color>
  1708.           &Col_stat      status line color             <color>
  1709.           &Def_ext       default file extension        <string>
  1710.           &Delete_join   delete joins lines            T/F
  1711.           &Delim         delimiters                    2 <strings>
  1712.           &Dial_mode     user interface mode           0-2
  1713.           &Eof_mark      write eof marker              T/F
  1714.           &Eol_char      end of line char              0-255
  1715.           &Error_only    error-only error parsing      T/F
  1716.           &Exit_to_dir   exit to string entry box      T/F
  1717.           &Ext_keybios   use extended keyboard BIOS    T/F
  1718.      *    &Insert        insert mode                   T/F
  1719.           &Kill_save     unkill stack size             5-10240
  1720.           &Lf_only       write LF only files           T/F
  1721.           &M_button_del  mouse button click delay      200-1000
  1722.           &M_repeat_del  mouse repeat factor           0-1000
  1723.           &Mark_paste    mark after pasting            T/F
  1724.      *    &Matching      matching mode                 T/F
  1725.           &Para_indent   indent starts para            T/F
  1726.           &Picklist      where/what filenames saved    0-4
  1727.           &Prn_crlf      print cr/lf setting           T/F
  1728.           &Prn_dest      print destination             0-2
  1729.           &Prn_header    print header                  T/F
  1730.           &Prn_left_marg print left margin             0-256
  1731.           &Prn_line_no   print line numbers            T/F
  1732.           &Prn_lines_pp  print lines per page          1-256
  1733.           &Prn_top_marg  print top margin              0-256
  1734.           &Profile_mode  profile mode                  T/F
  1735.      *    &Rec_mode      text recognition mode         0-1
  1736.           &Replace_defs  replace default modifiers     <string>
  1737.           &Resume_pos    attempt restoer cursor pos    T/F
  1738.           &Return_split  return splits line            T/F
  1739.      *    &Right_marg    right margin                  0-1024
  1740.           &Safe_save     use safe saves                T/F
  1741.           &Save_scr      save DOS entry screen         T/F
  1742.           &Search_defs   search default modifiers      <string>
  1743.      *    &Smart_tabs    smart tabs                    T/F
  1744.           &Sound_dur     sound duration                0-10000
  1745.           &Sound_freq    sound frequency               0-10000
  1746.      *    &Tabsize       tabsize                       0-80
  1747.      *    &Timed         timed backups                 0-10000
  1748.           &Undo_many     number of undo events         0-2048
  1749.           &Use_mouse     use mouse                     T/F
  1750.           &Use_vmem      virtual memory scheme         0-4
  1751.           &Vmode         video mode                    0-2
  1752.           &Wild_load     wildcard loading rules        0-3
  1753.           &Win_close     window closes with file       T/F
  1754.           &Word_delim    word delimter chars           <string>
  1755.  
  1756.                            Bingo 3.10 Reference Manual
  1757.                                        24
  1758.  
  1759.  
  1760.  
  1761.  
  1762.      *    &Wordwrap      wordwrap mode                 T/F
  1763.  
  1764.      Note: The entries marked with an asterisk (*) are also found in
  1765.      profile files.
  1766.  
  1767.      <color>: <foreground><background>
  1768.  
  1769.      where the <foreground> and <background> are characters from the
  1770.      following list:
  1771.  
  1772.           k    black
  1773.           b    blue
  1774.           g    green
  1775.           c    cyan
  1776.           r    red
  1777.           m    magenta
  1778.           y    yellow
  1779.           w    white
  1780.  
  1781.      Lowercase characters mean low-intensity colors, while uppercase
  1782.      indicates high intensity.  For example:
  1783.           Bk   =    Bright Blue on Black
  1784.           cb   =    Cyan on Blue
  1785.           Wr   =    Bright White on Red
  1786.  
  1787.           As a rule, you do not really need to ever edit this file
  1788.      directly; Bingo will write out a complete BINGO.INI file for you when
  1789.      you use the 'save_settings' function.  The reason the .INI file is
  1790.      saved in ASCII file format is for easy upgradability to future
  1791.      versions of Bingo.
  1792.  
  1793.  
  1794.  
  1795.  
  1796.  
  1797.  
  1798.  
  1799.  
  1800.  
  1801.  
  1802.  
  1803.  
  1804.  
  1805.  
  1806.  
  1807.  
  1808.  
  1809.  
  1810.  
  1811.  
  1812.  
  1813.  
  1814.                            Bingo 3.10 Reference Manual
  1815.                                        25
  1816.  
  1817.  
  1818.  
  1819.  
  1820.      Bingo and Larger Screen Displays
  1821.      --------------------------------
  1822.           EGA, VGA, and MCGA video display cards support displays larger
  1823.      than the standard 25 rows by 80 columns.  Bingo does support editing
  1824.      on these screen sizes.   Bingo can be set to handle screen displays in
  1825.      one of three ways:
  1826.           -    Bingo can be set to detect the current screen type and
  1827.                dimensions, and do retrace checking.
  1828.           -    Bingo can be set to detect the current screen type and size,
  1829.                but do no retrace checking.
  1830.           -    Bingo can be set to switch to 43/50 line mode if it is
  1831.                supported.  No retrace checking will be performed.
  1832.      As shipped, Bingo chooses the middle of these three courses.  The
  1833.      retrace checking is only done if you are using a color display with a
  1834.      25x80 configuration.
  1835.  
  1836.  
  1837.  
  1838.  
  1839.  
  1840.  
  1841.  
  1842.  
  1843.  
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.  
  1853.  
  1854.  
  1855.  
  1856.  
  1857.  
  1858.  
  1859.  
  1860.  
  1861.  
  1862.  
  1863.  
  1864.  
  1865.  
  1866.  
  1867.  
  1868.  
  1869.  
  1870.  
  1871.  
  1872.                            Bingo 3.10 Reference Manual
  1873.                                        26
  1874.  
  1875.  
  1876.  
  1877.  
  1878.      Bingo's Menu System
  1879.      -------------------
  1880.           Bingo implements a comprehensive menu structure to aid you in
  1881.      utilizing Bingo's functions.  Many people, myself included, do not
  1882.      necessarily wish to spend the time to assign every function we need to
  1883.      a keyboard equivalent.  This requires a large time investment before
  1884.      you can begin using the editor.  On the other hand, it is very
  1885.      irritating when you need a particular function and cannot use it
  1886.      because you did not have the foresight to assigned it to a key
  1887.      combination.  
  1888.           Bingo's menu system was designed to handle just this situation. 
  1889.      By assigning the 'main_menu' function to a keystroke, you effectively
  1890.      have access to *every* function Bingo has.  First, almost all of
  1891.      Bingo's functions are directly accessible from the menus, grouped in
  1892.      logical sets, following a logical hierarchy.  The remaining functions
  1893.      can be accessed by selecting the 'eXtras' sub-menu, then the 'Pick and
  1894.      exec' function.  This function then allows you to choose from a list
  1895.      of *all* supported functions.
  1896.           I have found that for most people, it pays to assign your most
  1897.      commonly needed functions to keystrokes, and then rely on the menu
  1898.      system for the ones which are used to a lesser degree.  The logical
  1899.      structure of the menus allows for easy access to less frequently
  1900.      needed functions.
  1901.           The menus themselves work quite easily.  A list of possibilities
  1902.      is presented.  A menu bar can be moved up and down to make your
  1903.      choice; pressing Return selects the choice.  In addition, each choice
  1904.      has a highlighted character; pressing this character will
  1905.      automatically select the choice.
  1906.           In some cases you may be presented with a child menu.  Here again
  1907.      you may make a choice as before, with one additional bit of
  1908.      functionality.  If you are in a child menu, pressing the PgUp or PgDn
  1909.      keys will move you to the previous or next sibling menu, respectively. 
  1910.           The Print menu, as well as all of the configuration menus, is a
  1911.      multiple menu.  This means that after you have made a choice, the
  1912.      action will be executed and you will be returned to the menu at the
  1913.      same spot.  I have found that when printing and configuring, people
  1914.      usually want to do more than one task.  Menus which are multiple will
  1915.      have an asterisk ('*') printed at the bottom of the menu border.
  1916.           The Escape key always closes the current child menu.  If you are
  1917.      at the top menu, it quits the menu system entirely.  To see how your
  1918.      mouse, if you have one, interacts with the menus, see the section
  1919.      concerning Bingo and a mouse.
  1920.  
  1921.  
  1922.  
  1923.  
  1924.  
  1925.  
  1926.  
  1927.  
  1928.  
  1929.  
  1930.                            Bingo 3.10 Reference Manual
  1931.                                        27
  1932.  
  1933.  
  1934.  
  1935.  
  1936.      Bingo's User Interface
  1937.      ----------------------
  1938.           Bingo's user interface comes in two flavors.  The default method,
  1939.      which longtime users of Bingo will recognize, uses bordered boxes in
  1940.      the center of the screen to display and ask for user input.  The
  1941.      second type of interface, which uses a command line at the bottom of
  1942.      the screen, is new for v3.00.  Which interface style is used is
  1943.      controlled by the setting of the 'conf_dialogue' option.  Regardless
  1944.      of the setting, the input rules are the same for the 4 main types of
  1945.      interface interaction. They are as follows.
  1946.  
  1947.           String Entry Boxes:
  1948.  
  1949.           These are the boxes which ask you for string input.  The easiest
  1950.      example is when Bingo asks you for a file name.  These boxes allow you
  1951.      to enter string input in a flexible manner.  A wide variety of
  1952.      keystrokes are available to aid in this endeavor; they are:
  1953.  
  1954.                ^F/CursRt      One Character Forward
  1955.                ^B/CursLt      One Character Backward
  1956.                ^A/Home        Beginning of Line
  1957.                ^E/End         End of Line
  1958.                ^K/CtrlEnd     Delete to Eol
  1959.                CtrlHome       Delete to Bol
  1960.                ^Y             Delete Line
  1961.                ^Q             Quote character; the next character you type
  1962.                               (such as control-L, or using the Alt-keypad
  1963.                               to enter ASCII values) will be literally
  1964.                               inserted into the string
  1965.                Tab            Insert from Paste Buffer 
  1966.                Insert         Toggle insert Mode
  1967.                Alt-A          Invoke the ASCII Table
  1968.                Up Arrow       In Boxes interface mode, pops up a list of
  1969.                               the previous 15 strings entered.  In Command-
  1970.                               Line interface mode, displays the previous
  1971.                               string entered.  Repeatedly hitting this key
  1972.                               will cycle through the entire list.
  1973.                Down Arrow     Valid only in Command-line mode, this cycles
  1974.                               through the list in the opposite direction as
  1975.                               Up Arrow.
  1976.                PgUp           In Boxes interface mode, pops up a list of
  1977.                               the previous 15 file names edited.  In
  1978.                               Command-Line interface mode, displays the
  1979.                               previous file name entered.  Repeatedly
  1980.                               hitting this key will cycle through the
  1981.                               entire list of file names.
  1982.                PgDn           Valid only in Command-line mode, this cycles
  1983.                               through the list in the opposite direction as
  1984.                               PgUp.
  1985.  
  1986.           Pressing <Escape> will abort out of the string entry operation.
  1987.  
  1988.                            Bingo 3.10 Reference Manual
  1989.                                        28
  1990.  
  1991.  
  1992.  
  1993.  
  1994.           Yes/No Boxes:
  1995.  
  1996.           These are the boxes which require a yes or no answer to a
  1997.      question.  An example of this is when you 'quit' a file and the file
  1998.      has been modified.  Bingo will ask you if you wish to save the file.
  1999.           Each time you enter a Yes/No box, one of the two options will be
  2000.      will be highlighted (in the Command-Line method, the 'Y' or 'N' will
  2001.      be capitalized to indicate the default).  This is the default option
  2002.      which will be selected if you press <Return>.  In the Boxes interface
  2003.      method, using the Left and Right Arrow keys, you can change the
  2004.      current selection.  Alternatively, you can press either the 'y' key
  2005.      (any case) for a yes answer, or the 'n' key (any case) for a no
  2006.      answer.
  2007.           Pressing <Escape> will abort the operation.
  2008.  
  2009.  
  2010.           Non-Editable Display Boxes:
  2011.  
  2012.           The easiest example of this type of box is the Help box, or the
  2013.      Info box.  This type of box simply displays a number of lines within a
  2014.      box.  By using the Up and Down arrows (also the space bar) you may
  2015.      scroll by lines, and by using the Page Up and Page Down keys you may
  2016.      scroll by pages.
  2017.           Any other keystroke will exit the box.
  2018.           The Command-Line method, when turned on, will display the same
  2019.      box as the Boxes method; there is no command line equivalent.
  2020.  
  2021.  
  2022.           List-Picking Boxes:
  2023.  
  2024.           The best example of this type of dialogue box occurs when the
  2025.      'directory list picker' pops up.  This type of box is very similar to
  2026.      the Non-Editable box discussed above, but the idea here is not merely
  2027.      to display information but to facilitate making a choice.  There will
  2028.      be a menu bar highlighted, showing the current selection.  You may
  2029.      move this bar up and down using the arrow and page keys.  Pressing
  2030.      <Return> will selection this option.
  2031.           Additionally, the initial character of each selection may be
  2032.      highlighted.  If so, pressing the corresponding character will
  2033.      automatically select this option.
  2034.           Finally, even if the leading characters of each selection are not
  2035.      so highlighted, you may "step" through the selections by pressing
  2036.      letter keys.  The menu bar will move to the next selection which
  2037.      starts with the letter pressed.  If necessary, the menu bar will wrap
  2038.      to the top of the list (Bingo will beep in this case).  In the case of
  2039.      the directory picker, the leading '\' characters of directory entries
  2040.      will be ignored.
  2041.           As is the custom, the <Escape> key will abort the operation.
  2042.           Again, there is no Command-Line equivalent; a bordered box will
  2043.      be used.
  2044.  
  2045.  
  2046.                            Bingo 3.10 Reference Manual
  2047.                                        29
  2048.  
  2049.  
  2050.  
  2051.  
  2052.      Directory Lister
  2053.      ----------------
  2054.           One of the extremely useful features of Bingo is its directory
  2055.      lister.  Often, Bingo will ask for a file name.  If the name you give
  2056.      matches more than one file, in the case of wild cards, for instance,
  2057.      the lister will appear with a list of matches and all subdirectories
  2058.      in the current directory.  There are several features embedded in this
  2059.      lister to assist you in choosing a file. 
  2060.           First, all subdirectory entries in the current directory will are
  2061.      shown at the top, with a '\' character preceding them.  Selecting any
  2062.      of these will cause the lister to change to that directory.
  2063.           Second, pressing a letter causes the Lister to move to the next
  2064.      file name whose first character matches the letter pressed.  A beep
  2065.      will sound if the search wraps around to the beginning.
  2066.           The list is sorted alphabetically by name, but subdirectory
  2067.      entries come first.  The last entry is always the New Specification
  2068.      entry, which allows you to type in a new specification, perhaps
  2069.      another drive if it is necessary. 
  2070.           You have 2 choices in the directory lister other than choosing a
  2071.      file.  The second-last option in the list, "Load All Matching Files",
  2072.      will, as you might guess, load all the files shown in the list.  It
  2073.      will not attempt to load subdirectories.  The last option, "New File
  2074.      Spec", allows you to re-choose the directory specification.
  2075.  
  2076.  
  2077.  
  2078.  
  2079.  
  2080.  
  2081.  
  2082.  
  2083.  
  2084.  
  2085.  
  2086.  
  2087.  
  2088.  
  2089.  
  2090.  
  2091.  
  2092.  
  2093.  
  2094.  
  2095.  
  2096.  
  2097.  
  2098.  
  2099.  
  2100.  
  2101.  
  2102.  
  2103.  
  2104.                            Bingo 3.10 Reference Manual
  2105.                                        30
  2106.  
  2107.  
  2108.  
  2109.  
  2110.      Bingo and File Names
  2111.      --------------------
  2112.           Many times during normal operation, Bingo will ask you for a file
  2113.      name.  Bingo potentially handles file names slightly differently than
  2114.      plain vanilla DOS.  In particular, let's examine the difference
  2115.      between
  2116.  
  2117.           'thisfile'          and       'thisfile.'
  2118.  
  2119.           The first does not contain a period.  In this case, Bingo will do
  2120.      two things.  First, it will, for each defined default extension, check
  2121.      if the file with that extension exists.  If it does, it will use that
  2122.      file name.  Possibly, one of the default extensions is '.*'.  This
  2123.      would lead you to a directory list picker.  
  2124.           The second contains the trailing period, and so will be used as
  2125.      is.  So, in order to specify a file ignoring the default extensions,
  2126.      you must add the trailing period.
  2127.           Additionally, Bingo accepts either '/' or '\' characters as file
  2128.      delimiters.  This will make life a little easier on those of us who
  2129.      use UNIX systems regularly.  Finally, version 2.10 allows the use of
  2130.      the '..' and '.' directory primitives.
  2131.           Also, there are two other specifications you may use. ':home:'
  2132.      will be translated by Bingo into Bingo's original directory.  So,
  2133.      ':home:bingo.hlp' would be translated to 'bingo.hlp' in Bingo's home
  2134.      directory.  Likewise, ':temp:' will be mapped to the value of the TEMP
  2135.      environment variable.  If TEMP is not defined, it will use the TMP
  2136.      environment variable.  
  2137.           Finally, if you use any other ':xxx:' string and do not use
  2138.      'home' or 'temp', the string between the ':' is translated as an
  2139.      environment variable.  For example, if you have the line:
  2140.           set CHESS=c:\edit\chess\
  2141.      is in your AUTOEXEC.BAT files, the using the filename
  2142.           :chess:test.chs
  2143.      would be expanded to
  2144.           c:\edit\chess\test.chs.
  2145.      This is very handy when you want to put things in specific locations
  2146.      and just define the location as a variable.
  2147.  
  2148.  
  2149.  
  2150.  
  2151.  
  2152.  
  2153.  
  2154.  
  2155.  
  2156.  
  2157.  
  2158.  
  2159.  
  2160.  
  2161.  
  2162.                            Bingo 3.10 Reference Manual
  2163.                                        31
  2164.  
  2165.  
  2166.  
  2167.  
  2168.      The Status Line
  2169.      ---------------
  2170.           On the bottom line of each window in Bingo's display is the
  2171.      status line.  This line communicates several valuable pieces of
  2172.      information.  On the left side of the line, the current line and
  2173.      column are displayed.  Next are a series of flags:
  2174.                  a     Auto indent
  2175.                  b     Box Draw Mode
  2176.                  c     C mode 
  2177.                  i     Insert mode
  2178.                  m     Matching Mode
  2179.                  r     Recording Macro
  2180.                  w     Word wrap
  2181.                  z     Zoom mode
  2182.      For each of these flags, if the letter is capitalized, it indicates
  2183.      that the toggle is on, while a lower case character indicates the
  2184.      option is toggled off.
  2185.           Next you will see something looking like [x/y] where 'y' is the
  2186.      number of files in the ring, and 'x' is the position of the current
  2187.      file in the ring.
  2188.           Finally, the file name comes.  It will be enclosed in curly
  2189.      braces, and only the drive letter and the actual 12 character
  2190.      filename.  If it is prefaced with an asterisk '*', it means the file
  2191.      has been modified.
  2192.           At the end of one of the on screen status lines, you will see
  2193.      either one or three little pyramids.  If there is a single pyramid,
  2194.      that means it is not the active window.  If there are three pyramids,
  2195.      they tell you which is the active window.  If the three pyramids are
  2196.      pointing up, the full-width window above the status line is the
  2197.      current window.  If the three pyramids point to the left, this means
  2198.      that of the two windows above the status line, the one on the left is
  2199.      the active window.  If the three pyramids point to the right, the
  2200.      window on the right is active.
  2201.           The same rules concerning the direction of the pyramids hold for
  2202.      inactive status lines, except that only one pyramid will be present.
  2203.           If this all sounds complicated, don't worry.  Open a few windows
  2204.      and move among them; it will become much clearer.
  2205.           Finally, on the right end of the current status line, a 'T' or
  2206.      'F' character will be shown.  This represent whether the last
  2207.      operation Bingo executed returned a value of True or False; i.e.,
  2208.      whether it worked.
  2209.  
  2210.  
  2211.  
  2212.  
  2213.  
  2214.  
  2215.  
  2216.  
  2217.  
  2218.  
  2219.  
  2220.                            Bingo 3.10 Reference Manual
  2221.                                        32
  2222.  
  2223.  
  2224.  
  2225.  
  2226.      Bingo and The Mouse
  2227.      -------------------
  2228.           Bingo has the capacity to make extensive use of a Microsoft
  2229.      (trademark, copyright, and kudos to Microsoft) compatible mouse,
  2230.      should you have one installed.  In order for the mouse to work, three
  2231.      things must be true:
  2232.           1) It must be connected to the computer properly.  See your mouse
  2233.      manual for instructions.
  2234.           2) You must have your mouse driver installed properly.  Again,
  2235.      see your mouse manual for instructions on how to accomplish this.
  2236.           3) You must have the 'Use Mouse' option turned on, found in the
  2237.      General configuration menu. Bingo is shipped with mouse use turned on.
  2238.  
  2239.           Bingo is designed to allow users of three button mice to make
  2240.      full use of all three buttons (I have a three button mouse).  However,
  2241.      users with two button mice will only lose a little functionality when
  2242.      it comes to programming the mouse, and no functionality at all when it
  2243.      comes to dealing with the menus and dialogue boxes.
  2244.           It is generally easy to tell if the mouse is working; the status
  2245.      line will have four additional "buttons", each consisting of three
  2246.      arrows enclosed in square braces.  Also, to conserve space, the file
  2247.      name will be shown without its full path.
  2248.  
  2249.      The Mouse Cursor
  2250.      ----------------
  2251.           The mouse cursor will appear on your screen as a solid, non-
  2252.      blinking block, which changes color depending on the underlying color. 
  2253.      It should be possible to move the cursor over the entire screen.  If
  2254.      the mouse cursor is present, it means that a response with the mouse
  2255.      is possible.  If it is not visible, this means that at this point, no
  2256.      mouse response makes sense.
  2257.  
  2258.      The Mouse at the General Editing Level
  2259.      --------------------------------------
  2260.           At the general editing screen, Bingo has 20 programmable mouse
  2261.      events.   The programmable events are handled exactly as key
  2262.      assignments are handled: through KEYCFG.  These are the mouse names:
  2263.  
  2264.                              Mouse Event Identifiers
  2265.  
  2266.           Three_buttons                 Left_right_buttons
  2267.           Left_middle_buttons           Multiple_left_button
  2268.           Single_left_button            Right_middle_buttons
  2269.           Multiple_right_button         Single_right_button
  2270.           Multiple_middle_button        Single_middle_button
  2271.  
  2272.           Single_pyramids               Multiple_pyramids
  2273.           Single_up_arrow               Single_down_arrow
  2274.           Single_left_arrow             Single_right_arrow
  2275.           Multiple_up_arrow             Multiple_down_arrow
  2276.           Multiple_left_arrow           Multiple_right_arrow
  2277.  
  2278.                            Bingo 3.10 Reference Manual
  2279.                                        33
  2280.  
  2281.  
  2282.  
  2283.  
  2284.           The first ten are concerned simply with what happens when you
  2285.      press the corresponding button sequence.  Note that users of two-
  2286.      button devices will only be able to utilize five of these, those
  2287.      dealing with the left and right buttons.
  2288.           The second ten refer to the 5 "hot spots" on the active status
  2289.      line.  There are two for each button, one for a single click and one
  2290.      for a double click.
  2291.  
  2292.           Now that you know of these event names, what can you do with
  2293.      them?  Well, you can assign them anything you could assign a key.  In
  2294.      addition, two special functions are provided to help deal with the
  2295.      mouse:
  2296.  
  2297.           snap_to_mouse_xy:
  2298.                this function moves the cursor to the current mouse
  2299.                position.  If necessary, it will change the active window.
  2300.  
  2301.           mouse_scroll:
  2302.                this function is kind of an expanded snap_to_mouse_xy. 
  2303.                First, it moves the cursor to the mouse position.  Then, as
  2304.                long as a mouse button is held down, the screen will scroll
  2305.                in the following manner:
  2306.                     1) If you are in the upper 1/8 of the screen you will
  2307.                     scroll up.
  2308.                     2) If you are in the next 1/8 of the screen, the screen
  2309.                     will scroll up, but more slowly.
  2310.                     3) If you are in the lower 1/8 of the screen you will
  2311.                     scroll down.
  2312.                     4) If you are in the next lower 1/8 of the screen, the
  2313.                     screen will scroll down, but more slowly.
  2314.  
  2315.                     Additionally, 'mouse_scroll' works in exactly the same
  2316.                     manner horizontally.
  2317.  
  2318.                     Finally, if automarking is turned on, 'mouse_scroll'
  2319.                     will update the marking on screen if marking is active.
  2320.  
  2321.                If you are elsewhere on the screen, you simply move the
  2322.                cursor about.  This makes 'click and drag' operations
  2323.                possible.
  2324.  
  2325.  
  2326.      Combining these with other functions, quite powerful mouse events can
  2327.      be programmed.  For example:
  2328.  
  2329.      Single_left_button       snap_to_mouse_xy
  2330.      Single_right_button      macro snap_to_mouse_xy point_mark
  2331.      Multiple_left_button     macro snap_to_mouse_xy linemark
  2332.                                    mouse_scroll linemark
  2333.  
  2334.  
  2335.  
  2336.                            Bingo 3.10 Reference Manual
  2337.                                        34
  2338.  
  2339.  
  2340.  
  2341.  
  2342.      The first simply moves the cursor, while the second moves the cursor
  2343.      and drops a point mark.  The third lets you scroll about the file,
  2344.      delineating an area to be marked.
  2345.  
  2346.           The ten "hot spots" can also be programmed as if they were keys.
  2347.        
  2348.      Single_down_arrow        cursor_down
  2349.      Double_down_arrow        down_page
  2350.  
  2351.      Here, this has defined the down arrow button to respond with a
  2352.      cursor_down if a single click occurs on it, or a down_page if a double
  2353.      click occurs on it.  
  2354.           These "buttons" work a little differently than you might expect -
  2355.      - as long as you hold the mouse button down, the function will
  2356.      repetitively execute.  So, if you double click on the down arrow
  2357.      "button" and hold the second click down, you will see the file whiz by
  2358.      at a truly astonishing speed.  The speed with which the functions are
  2359.      repetitively executed can be governed using the 'conf_mdelay'
  2360.      function.
  2361.           These 20 events give you the user an unparalleled degree of
  2362.      control over how the mouse responds.
  2363.  
  2364.      The Mouse and The Menus
  2365.      -----------------------
  2366.           The mouse would not be very useful if it was not well integrated
  2367.      into the menu system.  Great pains have been taken to make mouse use
  2368.      easy and intuitive with respect to the menu system.  
  2369.           It is very simple.  The left mouse button selects something, and
  2370.      the right mouse button closes the current menu.  However, there are a
  2371.      few refinements.
  2372.           If the item you select with a single left click is in the right-
  2373.      most menu, the effect is the same as if you had moved to that
  2374.      selection and hit <return>.  If the item is not the right-most menu,
  2375.      say the it is in the Main menu and you currently have the Block menu
  2376.      open, then you will simply be moved to the selection, with the other
  2377.      menus closed for you.  However, no equivalent <return> will be
  2378.      executed. 
  2379.           If, however, you use a double left click, the selection will be
  2380.      executed regardless of where it was on the menu hierarchy.  Any extra
  2381.      open menus will be closed to bring you to the selected level.
  2382.           Likewise, a single right click will close the current menu. 
  2383.      However, a double click will close *all* open menus.
  2384.           Note that this gives you some capabilities which are not
  2385.      available from the keyboard.
  2386.           If the above sounds complicated, don't worry.  In practice, it is
  2387.      very easy.  I would suggest you restrict yourself to single clicks
  2388.      when you begin, then move to double clicks when you are sure of what a
  2389.      single click would do.  You will very quickly find that the menus are
  2390.      effortlessly intertwined with the mouse.
  2391.  
  2392.  
  2393.  
  2394.                            Bingo 3.10 Reference Manual
  2395.                                        35
  2396.  
  2397.  
  2398.  
  2399.  
  2400.      The Mouse and Dialogue Boxes
  2401.      --------------------------
  2402.           Throughout Bingo, you will encounter many dialogue boxes.  There
  2403.      are four main types, and all support mouse use where appropriate. They
  2404.      are:
  2405.  
  2406.           String Entry Boxes:
  2407.  
  2408.           These are the boxes which ask you for string input.  The easiest
  2409.      example is when Bingo asks you for a file name.  There are only a few
  2410.      mouse options in these boxes; most of the time you must enter text
  2411.      from the keyboard.
  2412.           However, there are three supported button events.  A single left
  2413.      click has the same effect as a <return>; it accepts the current
  2414.      string.  A double left click wipes out the string; it in effect is a
  2415.      Control-Y equivalent.  Finally, any right button click is the
  2416.      equivalent of an <Escape> key.
  2417.  
  2418.           Yes/No Boxes:
  2419.  
  2420.           These are the boxes which require a yes or no answer to a
  2421.      question.  The easiest example of this is in the configuration
  2422.      options, where you are asked if you wish to toggle the option.  By
  2423.      placing the mouse cursor over the [Yes] selection and pressing the
  2424.      left mouse button, you answer in the affirmative.  Likewise, placing
  2425.      the mouse cursor over the [No] selection and pressing the left button
  2426.      answers in the negative.  
  2427.           As usual, pressing the right mouse button is equivalent to the
  2428.      <Escape> key.
  2429.  
  2430.           Non-Editable Display Boxes:
  2431.  
  2432.           The easiest example of this type of box is the Help box, or the
  2433.      Info box.  If there are more lines than fit within the box, up and
  2434.      down arrow boxes will appear in the upper and lower right hand corners
  2435.      of the box.  By moving the mouse cursor to the corresponding box and
  2436.      holding a mouse button down, the display will scroll in the
  2437.      corresponding direction.
  2438.           As expected, the right button exits.
  2439.  
  2440.           List-Picking Boxes:
  2441.  
  2442.           The best example of this type of dialogue box occurs when the
  2443.      'directory list picker' pops up.  Here, as in the Non-Editable Display
  2444.      Boxes, up and down arrow boxes will appear if necessary.  Furthermore,
  2445.      moving the mouse cursor to a particular selection and pressing a
  2446.      single left key will move the menu bar to that selection.
  2447.           Moving the mouse cursor to a particular selection and double left
  2448.      clicking will select that particular selection as if you had moved the
  2449.      menu bar there and typed <return>.
  2450.           As always, the right button is the equivalent of typing <Escape>.
  2451.  
  2452.                            Bingo 3.10 Reference Manual
  2453.                                        36
  2454.  
  2455.  
  2456.  
  2457.  
  2458.      The Mouse and The ASCII Table
  2459.      -----------------------------
  2460.           The mouse is also tightly integrated with the ASCII table
  2461.      function, 'ascii_table'.  Here, single left clicking on a character
  2462.      moves the cursor to it (updating the display).  Double left clicking
  2463.      selects the character and adds it to the string.
  2464.           Single left clicking on the [Bspace] bar is equivalent to typing
  2465.      <backspace>; it removes one character from the string.  A double left
  2466.      click on this spot zeroes the string entirely.
  2467.           As always, clicking the right button is the equivalent of typing
  2468.      <Escape>.
  2469.  
  2470.  
  2471.  
  2472.  
  2473.  
  2474.  
  2475.  
  2476.  
  2477.  
  2478.  
  2479.  
  2480.  
  2481.  
  2482.  
  2483.  
  2484.  
  2485.  
  2486.  
  2487.  
  2488.  
  2489.  
  2490.  
  2491.  
  2492.  
  2493.  
  2494.  
  2495.  
  2496.  
  2497.  
  2498.  
  2499.  
  2500.  
  2501.  
  2502.  
  2503.  
  2504.  
  2505.  
  2506.  
  2507.  
  2508.  
  2509.  
  2510.                            Bingo 3.10 Reference Manual
  2511.                                        37
  2512.  
  2513.  
  2514.  
  2515.  
  2516.                                Bingo and A Network
  2517.                                -------------------
  2518.           Bingo will function quite well within the network environment,
  2519.      but there are some concerns network administrators should be aware of. 
  2520.      Several operations cause Bingo to save temporary data to disk.  Swap-
  2521.      execution, automatic backups, and virtual memory all flush data to
  2522.      disk files for storage.  
  2523.           By default, Bingo looks for an environment variable called "TEMP"
  2524.      (first choice) or "TMP" (second choice).  If found, it will be used as
  2525.      a directory specification for storage of the above temporary files. 
  2526.      If neither of the two environment variables is defined, the directory
  2527.      where BE.EXE was located is used.
  2528.           This enables network administrators to set up Bingo so that users
  2529.      can run the same executable, but by giving each user a separate
  2530.      definition of "TEMP" (or "TMP"), each user's temporary storage area
  2531.      will be separate from one another.
  2532.  
  2533.  
  2534.  
  2535.  
  2536.  
  2537.  
  2538.  
  2539.  
  2540.  
  2541.  
  2542.  
  2543.  
  2544.  
  2545.  
  2546.  
  2547.  
  2548.  
  2549.  
  2550.  
  2551.  
  2552.  
  2553.  
  2554.  
  2555.  
  2556.  
  2557.  
  2558.  
  2559.  
  2560.  
  2561.  
  2562.  
  2563.  
  2564.  
  2565.  
  2566.  
  2567.  
  2568.                            Bingo 3.10 Reference Manual
  2569.                                        38
  2570.  
  2571.  
  2572.  
  2573.  
  2574.                              Bingo Function Summary
  2575.                              ----------------------
  2576.  
  2577.           This section will give a overview of the basic functionality
  2578.      included in Bingo.  For each section, detail for some of the more
  2579.      intricate functions will be presented.  After the narrative section, a
  2580.      reference list for each function in the section will be presented. 
  2581.      The index at the end of the manual can be used as an alphabetical
  2582.      cross-reference.  Have fun!
  2583.  
  2584.  
  2585.  
  2586.  
  2587.  
  2588.  
  2589.  
  2590.  
  2591.  
  2592.  
  2593.  
  2594.  
  2595.  
  2596.  
  2597.  
  2598.  
  2599.  
  2600.  
  2601.  
  2602.  
  2603.  
  2604.  
  2605.  
  2606.  
  2607.  
  2608.  
  2609.  
  2610.  
  2611.  
  2612.  
  2613.  
  2614.  
  2615.  
  2616.  
  2617.  
  2618.  
  2619.  
  2620.  
  2621.  
  2622.  
  2623.  
  2624.  
  2625.  
  2626.                            Bingo 3.10 Reference Manual
  2627.                                        39
  2628.  
  2629.  
  2630.  
  2631.  
  2632.                                 Configuring Bingo
  2633.                                 -----------------
  2634.  
  2635.           Bingo is extremely configurable.  To access the configuration
  2636.      menu, select the 'Config' option from the main menu, or attach keys to
  2637.      particular configuration functions.
  2638.           To make the current selections permanent, select the "Write
  2639.      setting" option found on the main configuration menu.
  2640.           There is one other item of interest.  The settings found on the
  2641.      'Text Settings' configuration menu per buffer basis.  These settings
  2642.      are the ones saved in profile files.  Each time you change these with
  2643.      a 'conf_' function, you change both the underlying default (used when
  2644.      new files are brought in) and the current buffer's settings.  For a
  2645.      few settings, there are also 'toggle_' functions, such as
  2646.      'toggle_cmode'.  These change only the current buffer's settings.
  2647.  
  2648.                                   Function List
  2649.      ----------------------------------------------------------------------
  2650.  
  2651.                                                               Save_settings
  2652.      ---------------------------------------------------------------------
  2653.      Saves the current config settings to the file you name, usually
  2654.      BINGO.INI.  Upon start up, Bingo looks in the local directory then in
  2655.      Bingo's execution directory for BINGO.INI.
  2656.  
  2657.                                                                  Conf_color
  2658.      ----------------------------------------------------------------------
  2659.      Configure the color settings.  You select the color you are interested
  2660.      in by pressing the appropriate color.  Then, by watching the bottom
  2661.      line on the screen and pressing the up and down arrow keys for the
  2662.      foreground and the pageup and pagedown keys for the background, you
  2663.      select the color you want.  Pressing return will select the color. 
  2664.      For the Overscan (border) attribute, only the background attribute
  2665.      matters.
  2666.  
  2667.                                                                    Conf_lfs
  2668.      ----------------------------------------------------------------------
  2669.      Alter the lfs-only setting.  If on, this setting has Bingo write files
  2670.      with lines separated by LF's only, in the UNIX fashion.  Otherwise,
  2671.      Bingo uses CR-LF pairs to delimit lines.
  2672.  
  2673.  
  2674.  
  2675.  
  2676.  
  2677.  
  2678.  
  2679.  
  2680.  
  2681.  
  2682.  
  2683.  
  2684.                            Bingo 3.10 Reference Manual
  2685.                                        40
  2686.  
  2687.  
  2688.  
  2689.  
  2690.                                                                Conf_backups
  2691.      ----------------------------------------------------------------------
  2692.      Allows you to specify the character Bingo uses to automatically create
  2693.      backup files when a file is saved.  The algorithm used takes the
  2694.      character you give and uses it to flesh out the extension of the
  2695.      original file to three characters; if the extension is already 3
  2696.      characters long, the backup character replaces the third character of
  2697.      the extension.  For example, if the backup character is '$', 
  2698.                main.c         becomes        main.c$$
  2699.                main.cp        becomes        main.cp$
  2700.                main.pas       becomes        main.pa$
  2701.  
  2702.                                                                    Conf_eof
  2703.      ----------------------------------------------------------------------
  2704.      Alter whether Bingo writes a EOF character at the end of files (^Z).
  2705.  
  2706.                                                                 Conf_search
  2707.      ----------------------------------------------------------------------
  2708.      Allows you to predetermine which flags (I/G/B/etc...) will be set
  2709.      initially for a search and replace attempts.
  2710.  
  2711.                                                              Conf_stripping
  2712.      ----------------------------------------------------------------------
  2713.      Configure whether Bingo strips the high bit of characters when
  2714.      reading.  Only really useful when reading Wordstar files.
  2715.  
  2716.                                                                Conf_rmargin
  2717.      ----------------------------------------------------------------------
  2718.      Set the right margin.  Affects paragraph reformatting and word wrap. 
  2719.      This changes the current buffer's setting and the global setting.    
  2720.  
  2721.                                                             Conf_autoindent
  2722.      ----------------------------------------------------------------------
  2723.      Set whether Bingo uses auto indent mode.  Affects paragraph
  2724.      reformatting and word wrap.  This changes both the current buffer's
  2725.      setting and the global setting.
  2726.  
  2727.                                                               Conf_wordwrap
  2728.      ----------------------------------------------------------------------
  2729.      Set the word wrap mode.  This changes both the current buffer's
  2730.      setting and the global setting.
  2731.  
  2732.                                                                 Conf_insert
  2733.      ----------------------------------------------------------------------
  2734.      Alter whether Bingo is in insert/overwrite mode.  This changes both
  2735.      the current buffer's setting and the global setting.
  2736.  
  2737.                                                                Conf_tabsize
  2738.      ----------------------------------------------------------------------
  2739.      Set the tab size.  This changes both the current buffer's setting and
  2740.      the global setting.
  2741.  
  2742.                            Bingo 3.10 Reference Manual
  2743.                                        41
  2744.  
  2745.  
  2746.  
  2747.  
  2748.                                                              Conf_backspace
  2749.      ----------------------------------------------------------------------
  2750.      Configure the backspace mode:
  2751.                          1. Delete single chars
  2752.                          2. Delete spaces back to tab setting
  2753.                          3. Delete spaces to left margin
  2754.                          4. Rubout
  2755.      This changes both the current buffer's setting and the global setting.
  2756.  
  2757.                                                                  Conf_cmode
  2758.      ----------------------------------------------------------------------
  2759.      Configure whether Bingo uses C Mode on *.c and *.h files.  Allows you
  2760.      to choose between two different modes of C indention:
  2761.  
  2762.                for(i=0;i<10;i++){       and       for(i=0;i<10;i++)
  2763.                     ...stuff...                   {
  2764.                }                                       ...stuff...
  2765.                                                   }
  2766.      This changes both the current buffer's setting and the global setting.
  2767.  
  2768.                                                                  Conf_sound
  2769.      ----------------------------------------------------------------------
  2770.      Allows you to set the frequency of the beep Bingo uses.  Setting it to
  2771.      zero will effectively turn off the sound.
  2772.  
  2773.                                                                 Conf_mdelay
  2774.      ----------------------------------------------------------------------
  2775.      Allows you to specify the timing delay between repetitions of a
  2776.      function(s) being executed while a mouse button is held down.  For
  2777.      example, on reasonably quick machines, paging down while holding the
  2778.      mouse button down on one of the status line "hot spots" occurred so
  2779.      fast with version 2.0 so as to be useless.  
  2780.  
  2781.                                                            Conf_button_wait
  2782.      ----------------------------------------------------------------------
  2783.      Allows you to configure, in milliseconds, the amount of delay Bingo
  2784.      will wait for the second click of a double click.
  2785.  
  2786.                                                                 Conf_shadow
  2787.      ----------------------------------------------------------------------
  2788.      Silly function, configures whether Bingo uses "shadow" boxes.  Play
  2789.      with it, amaze your friends.
  2790.  
  2791.                                                              Conf_win_close
  2792.      ----------------------------------------------------------------------
  2793.      Controls whether Bingo automatically closes a window when the file is
  2794.      closed.
  2795.  
  2796.  
  2797.  
  2798.  
  2799.  
  2800.                            Bingo 3.10 Reference Manual
  2801.                                        42
  2802.  
  2803.  
  2804.  
  2805.  
  2806.                                                                Conf_def_ext
  2807.      ----------------------------------------------------------------------
  2808.      Allows you to specify the file extensions Bingo will attempt to use
  2809.      when you specify a file name without '.'.  The extensions are checked
  2810.      in order.
  2811.  
  2812.                                                             Conf_video_mode
  2813.      ----------------------------------------------------------------------
  2814.      Allows you to choose from between three screen handling options:
  2815.                     - autodetect with retrace checking
  2816.                     - autodetect with no retrace checking
  2817.                     - 43 or 50 line mode, if supported
  2818.      Retrace checking will only be in effect if there are only 25 lines to
  2819.      be displayed.
  2820.  
  2821.                                                                    Conf_prn
  2822.      ----------------------------------------------------------------------
  2823.      Set the printer destination, between the default serial port, the
  2824.      default parallel port, or a file.
  2825.  
  2826.                                                                  Conf_tmarg
  2827.      ----------------------------------------------------------------------
  2828.      Set the top margin, in terms of number of lines.
  2829.  
  2830.                                                                  Conf_bmarg
  2831.      ----------------------------------------------------------------------
  2832.      Set the bottom margin, in terms of number of lines.
  2833.  
  2834.                                                                  Conf_lmarg
  2835.      ----------------------------------------------------------------------
  2836.      Set the left margin which will be used when printing, in terms of
  2837.      spaces.
  2838.  
  2839.                                                              Conf_lines_per
  2840.      ----------------------------------------------------------------------
  2841.      Set the lines per page, counting the top margin.
  2842.  
  2843.                                                              Conf_kill_size
  2844.      ----------------------------------------------------------------------
  2845.      Alters the size of the kill buffer.
  2846.  
  2847.                                                              Conf_cut_stack
  2848.      ----------------------------------------------------------------------
  2849.      Allows you to choose whether text about to be discarded from the paste
  2850.      buffer should be placed on the stack.  If this is on, this will slow
  2851.      block operations down a bit, but it is a nice safety feature.
  2852.  
  2853.  
  2854.  
  2855.  
  2856.  
  2857.  
  2858.                            Bingo 3.10 Reference Manual
  2859.                                        43
  2860.  
  2861.  
  2862.  
  2863.  
  2864.                                                               Conf_auto_cut
  2865.      ----------------------------------------------------------------------
  2866.      Allows you to toggle how the 'cut' and 'copy' functions respond when
  2867.      no block has been marked.  If auto cut is active, these functions will
  2868.      cut (or copy) the current line.  If auto cut is not active, the
  2869.      current line will be Line marked.
  2870.  
  2871.                                                             Conf_smart_tabs
  2872.      ----------------------------------------------------------------------
  2873.      Allows you to specify whether or not "Smart" tabs are active.  Smart
  2874.      tabs cause the 'insert_tab' function to tab over to the same column as
  2875.      the next non-space character on the line previous.  This changes both
  2876.      the current buffer's setting and the global setting.
  2877.  
  2878.                                                               Conf_matching
  2879.      ----------------------------------------------------------------------
  2880.      Configures matching mode.  If matching mode is active, entering a
  2881.      '[{<(' character will cause its matching close member to be entered
  2882.      automatically.  This changes both the current buffer's setting and the
  2883.      global setting.
  2884.  
  2885.                                                                  Conf_trail
  2886.      ----------------------------------------------------------------------
  2887.      Allows you to configure whether or not Bingo automatically strips
  2888.      trailing spaces.
  2889.  
  2890.                                                                 Conf_bounce
  2891.      ----------------------------------------------------------------------
  2892.      Allows you what cursor movement paradigm Bingo uses.  If Bounce mode
  2893.      is active, Bingo views the entire document as one long string of
  2894.      characters.  Thus, you cannot move off of exiting text.  Further, the
  2895.      cursor will automatically wrap at the end of lines.  If Bounce mode is
  2896.      turned off, cursor movement is by the more traditional method, where
  2897.      you can move any where (horizontally) you wish.
  2898.  
  2899.                                                               Conf_key_bios
  2900.      ----------------------------------------------------------------------
  2901.      This governs whether or not Bingo will use the Extended Keyboard Bios
  2902.      if it is found.  On some machines, Bingo may identify it incorrectly,
  2903.      or there may be compatibility problems.  This function allows you to
  2904.      tell Bingo to disregard the extended Bios, even if it is found.  If
  2905.      this is on, the two sets of arrow keys, for example, will be
  2906.      recognized as different.  They will therefore have to be defined
  2907.      separately in your keyboard config file.
  2908.  
  2909.                                                                Conf_erronly
  2910.      ----------------------------------------------------------------------
  2911.      Allows you to tell Bingo to further restrict valid error lines to
  2912.      those containing the word 'error' (any case).  
  2913.  
  2914.  
  2915.  
  2916.                            Bingo 3.10 Reference Manual
  2917.                                        44
  2918.  
  2919.  
  2920.  
  2921.  
  2922.                                                                  Conf_mouse
  2923.      ----------------------------------------------------------------------
  2924.      Controls whether or not Bingo uses a Mouse, if it finds one.
  2925.  
  2926.                                                                Conf_profile
  2927.      ----------------------------------------------------------------------
  2928.      Controls whether Bingo will check for, and load if found, the profile
  2929.      file of a file's file extension each time a file is loaded.
  2930.  
  2931.                                                                   Conf_word
  2932.      ----------------------------------------------------------------------
  2933.      Allows you to edit the string containing what characters are not part
  2934.      of a word.
  2935.  
  2936.                                                               Conf_scr_save
  2937.      ----------------------------------------------------------------------
  2938.      Controls whether Bingo will save, and then restore, the DOS screen
  2939.      upon start up and exit.  Will cost you some memory.
  2940.  
  2941.                                                              Conf_name_save
  2942.      ----------------------------------------------------------------------
  2943.      Controls whether, and how, Bingo saves the last 15 files edited.  You
  2944.      can turn it off, tell it to save the info in the current directory
  2945.      (where Bingo looks first upon start up), or in Bingo's home directory. 
  2946.      Further, this controls whether only the filenames are saved, or if
  2947.      other history information (such as string entry history, file
  2948.      positions, etc) are saved.
  2949.  
  2950.                                                                 Conf_delims
  2951.      ----------------------------------------------------------------------
  2952.      Allows you to input and edit pairs of delimiters for Bingo to balance
  2953.      with the 'match_delim' function.  Both delimiters must be non-blank.
  2954.  
  2955.                                                            Conf_eol_display
  2956.      ----------------------------------------------------------------------
  2957.      Allows you to enter the ASCII decimal value of the character to be
  2958.      displayed as the end of line character.  The default is 32, the space
  2959.      character.
  2960.  
  2961.                                                           Conf_exit_to_pick
  2962.      ----------------------------------------------------------------------
  2963.      Controls Bingo's actions upon exit.  If turned on, Bingo will pop up
  2964.      an edit box when you quit the program (except when you exit through
  2965.      the abort_all function).
  2966.  
  2967.                                                                Conf_prn_eol
  2968.      ----------------------------------------------------------------------
  2969.      Controls whether Bingo terminates lines with a linefeed only or a
  2970.      carriage return/linefeed pair while printing.
  2971.  
  2972.  
  2973.  
  2974.                            Bingo 3.10 Reference Manual
  2975.                                        45
  2976.  
  2977.  
  2978.  
  2979.  
  2980.                                                             Conf_prn_lineno
  2981.      ----------------------------------------------------------------------
  2982.      Sets whether or not Bingo prints line numbers on each line it prints.
  2983.  
  2984.                                                             Conf_prn_header
  2985.      ----------------------------------------------------------------------
  2986.      Sets whether or not Bingo prints page headers on each page it prints. 
  2987.      Headers consist of the file name, the page number, and the date/time.
  2988.  
  2989.                                                          Conf_timed_backups
  2990.      ----------------------------------------------------------------------
  2991.      Allows you to specify how often, in terms of changes, to save a backup
  2992.      of a file.  A value of zero (0) indicates no automatic backups are to
  2993.      take place.  The value input becomes the default value for any
  2994.      subsequently entered files, and becomes the value for the current
  2995.      file; it does not change the value for any existing files.  Any
  2996.      operation which changes the file will increment the change counter. 
  2997.      The current number of changes for each file is displayed on the info
  2998.      screen.  When the predetermined number of changes has occurred, the
  2999.      file is saved as 
  3000.                  backXXXX.bak 
  3001.           where XXXX is the buffer 4 digit id number.  This id number is
  3002.      unique over an editing session, and is displayed as part of the info
  3003.      screen.  The backup files are identical to the files themselves,
  3004.      except that the first line contains the original name of the file
  3005.      (full path name) and the time of the backup.  So if there is a
  3006.      catastrophic failure (your cat chews through the power cord, for
  3007.      instance), you can explore the back*.bck files and recover recent
  3008.      version of your files.
  3009.           The *.bak files are stored in the location specified by the
  3010.      "TEMP" (or "TMP") environment variable; if this environment variable
  3011.      is not set the files will be stored in the root directory of the
  3012.      current drive.
  3013.  
  3014.           *Note*: Be very careful with setting this value.  Generally, a
  3015.           setting between 256 and 1024 is very useful.  However, if you are
  3016.           editing a multi-megabyte file, backups can be a large pain
  3017.           because of the time involved in saving the file.  
  3018.  
  3019.                                                              Conf_carriage 
  3020.      ----------------------------------------------------------------------
  3021.      This function toggles on and off whether or not the 'carriage'
  3022.      function splits lines. 
  3023.  
  3024.                                                           Conf_delete_join 
  3025.      ----------------------------------------------------------------------
  3026.      This function toggles on and off whether or not deleting at the end of
  3027.      a line brings the next line up. 
  3028.  
  3029.  
  3030.  
  3031.  
  3032.                            Bingo 3.10 Reference Manual
  3033.                                        46
  3034.  
  3035.  
  3036.  
  3037.  
  3038.                                                              Conf_wild_load
  3039.      ----------------------------------------------------------------------
  3040.      This function is used to control how Bingo interprets wild card
  3041.      characters in file names.  There are 4 choices:
  3042.           - never load wild card matches automatically
  3043.           - load wild card matches only at start up
  3044.           - load wild card matches every *but* start up
  3045.           - always automatically load wild card matches
  3046.  
  3047.                                                            Conf_chess_trace
  3048.      ---------------------------------------------------------------------
  3049.      This is used to turn on the Chess execution trace capability.  When
  3050.      enabled, each Chess program executed will stop at each line and
  3051.      display it.  You will be able to continue execution or halt it.
  3052.  
  3053.                                                               Conf_dialogue
  3054.      ----------------------------------------------------------------------
  3055.      This is used to set whether string, yes/no, and character dialogue
  3056.      takes place in bordered boxes in the center of the screen or at the
  3057.      bottom of the screen.
  3058.  
  3059.                                                              Conf_recognize
  3060.      ----------------------------------------------------------------------
  3061.      This is used to decide whether Bingo's text recognition system is
  3062.      continuously active ('Automatic' mode) or quiescent ('On-Demand'
  3063.      mode).  See the section on Extra Functions for a complete explanation
  3064.      of the text recognition system.
  3065.  
  3066.                                                                   Conf_undo
  3067.      ----------------------------------------------------------------------
  3068.      This sets the number of undo events Bingo saves systemwide.  Valid
  3069.      settings are 0 (which indicates no undo events are to be saved) to
  3070.      2048.
  3071.  
  3072.                                                               Conf_scr_save
  3073.      ----------------------------------------------------------------------
  3074.      This turns on or off whether Bingo saves what the DOS screen looked
  3075.      like before Bingo was started up.
  3076.  
  3077.                                                             Conf_resume_pos
  3078.      ----------------------------------------------------------------------
  3079.      This setting controls to whether or not Bingo attempts to resume to
  3080.      the last cursor position of the file when it was edited last.  In
  3081.      other words, when you load a file (if this option is turned on) and
  3082.      that file was one of the last 15 edited, and file status saving is
  3083.      turned on, Bingo will automatically move to the position the cursor
  3084.      was at when the file was last edited.  See the 'conf_name_save'
  3085.      function for more information.
  3086.  
  3087.  
  3088.  
  3089.  
  3090.                            Bingo 3.10 Reference Manual
  3091.                                        47
  3092.  
  3093.  
  3094.  
  3095.  
  3096.                                                                   Conf_vmem
  3097.      ----------------------------------------------------------------------
  3098.      Controls how Extended (XMS) and Expanded (EMS) memory are used in
  3099.      conjunction with the disk for virtual memory.  The choices are:
  3100.           a) Disk Only: Bingo immediately swaps to disk when it runs out of
  3101.           conventional memory.
  3102.           b) EMS Only: Bingo attempts to swap to EMS memory for virtual
  3103.           memory when it runs out; if EMS is exhausted or unavailable,
  3104.           Bingo will then use the disk.
  3105.           c) XMS Only: Bingo attempts to swap to XMS memory for virtual
  3106.           memory when it runs out; if XMS is exhausted or unavailable,
  3107.           Bingo will then use the disk.
  3108.           d) EMS, then XMS : Bingo attempts to swap to EMS memory for
  3109.           virtual memory when it runs out; if EMS is exhausted or
  3110.           unavailable, Bingo attempts to swap to XMS memory for virtual
  3111.           memory when it runs out; if XMS is exhausted or unavailable,
  3112.           Bingo will then use the disk.
  3113.           e) XMS, then EMS : Bingo attempts to swap to XMS memory for
  3114.           virtual memory when it runs out; if XMS is exhausted or
  3115.           unavailable, Bingo attempts to swap to EMS memory for virtual
  3116.           memory when it runs out; if EMS is exhausted or unavailable,
  3117.           Bingo will then use the disk.
  3118.  
  3119.                                                                   Conf_para
  3120.      ----------------------------------------------------------------------
  3121.      Controls what the definition of the beginning of a paragraph is.  The
  3122.      default (off) setting is a blank line; turned on, and indented line is
  3123.      a new paragraph.  This setting affect the 'reform_para' function.
  3124.  
  3125.                                                             Conf_mark_paste
  3126.      ----------------------------------------------------------------------
  3127.      This function allows you to turn on whether a pasted block is marked
  3128.      when it is pasted in.
  3129.  
  3130.  
  3131.  
  3132.  
  3133.  
  3134.  
  3135.  
  3136.  
  3137.  
  3138.  
  3139.  
  3140.  
  3141.  
  3142.  
  3143.  
  3144.  
  3145.  
  3146.  
  3147.  
  3148.                            Bingo 3.10 Reference Manual
  3149.                                        48
  3150.  
  3151.  
  3152.  
  3153.  
  3154.                                   Basic Editing
  3155.                                   -------------
  3156.  
  3157.           Basic editing concerns deletion and insertion of characters. 
  3158.      Bingo provides a number of ways to delete text without recourse to the
  3159.      block operation.  Five of these operations push deleted text onto the
  3160.      unkill stack -- 'del_eol', 'del_line', 'del_bol', 'del_word_lt', and
  3161.      'del_word_rt'.   
  3162.  
  3163.      The Destructive Backspace
  3164.      -------------------------
  3165.           Bingo supports four backspace deletion modes.  The first is the
  3166.      old favorite, the simple one character destructive backspace.  The
  3167.      second mode destructively deletes back to the previous tab stop,
  3168.      provided there are only spaces in the way.  If there are non-space
  3169.      characters in the way, it functions as in mode 1.
  3170.           The third mode deletes all the way to the left margin (column 1),
  3171.      provided it consists only of spaces.  Again, if there are non-space
  3172.      characters, it functions as mode 2.
  3173.           The fourth mode is termed a rubout.  In this mode, Bingo will
  3174.      backup one character and overwrite that character with a space.  
  3175.  
  3176.      The 'Default_' Functions
  3177.      ------------------------
  3178.           Bingo has two deletion functions which are variations on others. 
  3179.      The 'default_bspace' function is a variation on the 'back_space'
  3180.      function while the 'default_del' function is a variation on the
  3181.      'del_char'.  Both work in essentially the same manner.  If a block is
  3182.      marked, a 'cut' function is performed.  If no block is marked, the
  3183.      corresponding function.  
  3184.  
  3185.                                   Function List
  3186.      ----------------------------------------------------------------------
  3187.  
  3188.                                                                  Insert_tab
  3189.      ----------------------------------------------------------------------
  3190.      Insert the number of spaces needed to move the cursor to the next tab
  3191.      stop, based on the current tab size.
  3192.  
  3193.                                                                    Carriage
  3194.      ----------------------------------------------------------------------
  3195.      If the 'conf_carriage' setting is turned on, this function splits the
  3196.      current line by moving the cursor to the start of the next line,
  3197.      taking everything to the right of the cursor along for the ride.  If
  3198.      this moves you onto the bottom line of the window, the line will be
  3199.      centered on the screen.  Depending on C mode and the Auto indent mode
  3200.      settings, automatic indentation of some type may be performed.  If the
  3201.      'conf_carriage' setting is turned off, this function simply moves the
  3202.      cursor down one line.
  3203.  
  3204.  
  3205.  
  3206.                            Bingo 3.10 Reference Manual
  3207.                                        49
  3208.  
  3209.  
  3210.  
  3211.  
  3212.                                                                  Toggle_ins
  3213.      ----------------------------------------------------------------------
  3214.      Toggles the insert/overwrite mode. Changes only the setting of the
  3215.      current buffer.
  3216.                                                                 Toggle_wrap
  3217.      ----------------------------------------------------------------------
  3218.      Toggles the word wrap setting. Changes only the setting of the current
  3219.      buffer.
  3220.  
  3221.                                                                Toggle_cmode
  3222.      ----------------------------------------------------------------------
  3223.      Toggles the C mode setting, regardless of the file name. Changes only
  3224.      the setting of the current buffer.
  3225.  
  3226.                                                           Toggle_autoindent
  3227.      ----------------------------------------------------------------------
  3228.      Toggle the auto indent setting.  Changes only the setting of the
  3229.      current buffer.
  3230.  
  3231.                                                                    Del_char
  3232.      ----------------------------------------------------------------------
  3233.      Deletes the current character at the cursor position; if it was at the
  3234.      end of a line and the 'conf_delete_join' setting is turned on, brings
  3235.      the next line up.
  3236.  
  3237.                                                                  Back_space
  3238.      ----------------------------------------------------------------------
  3239.      If the 'conf_delete_join' setting is turned on, performs a destructive
  3240.      backspace, if the current deletion mode is not Rubout.  If the current
  3241.      mode is Rubout, the cursor will back up one space and the current
  3242.      character will be blanked based on the current deletion mode in
  3243.      effect.  If the setting is turned off, performs a rubout.
  3244.  
  3245.                                                                    Del_line
  3246.      ----------------------------------------------------------------------
  3247.      Deletes the entire current line, regardless of position.
  3248.  
  3249.                                                                     Del_eol
  3250.      ----------------------------------------------------------------------
  3251.      Deletes all text to the end of the line; if at the end of a line,
  3252.      joins the lines if the 'conf_delete_join' setting is turned on.
  3253.  
  3254.  
  3255.      Del_bol
  3256.      ----------------------------------------------------------------------
  3257.      Deletes all text to beginning of line, moves to first column. If at
  3258.      the beginning, joins the line with the previous line if the
  3259.      'conf_delete_join' setting is turned on.
  3260.  
  3261.  
  3262.  
  3263.  
  3264.                            Bingo 3.10 Reference Manual
  3265.                                        50
  3266.  
  3267.  
  3268.  
  3269.  
  3270.                                                                 Default_del
  3271.      ----------------------------------------------------------------------
  3272.      Does one of two things depending on whether or not a block is marked. 
  3273.      If a block is marked, the 'cut' function is executed.  If no block is
  3274.      marked, the 'del_char' function is executed.
  3275.  
  3276.                                                              Default_bspace
  3277.      ----------------------------------------------------------------------
  3278.      Similar to 'default_del', except that if no block is marked, a
  3279.      'back_space' function is executed.
  3280.  
  3281.                                                                 Del_word_rt
  3282.      ----------------------------------------------------------------------
  3283.      Deletes from the current cursor position to the start of the next word
  3284.      to the right.
  3285.  
  3286.                                                                 Del_word_lt
  3287.      ----------------------------------------------------------------------
  3288.      Deletes from the current cursor position to the start of the next word
  3289.      to the left.
  3290.  
  3291.                                                                   New_line 
  3292.      ----------------------------------------------------------------------
  3293.      Inserts a new line before the current line, without moving the cursor.
  3294.  
  3295.  
  3296.  
  3297.  
  3298.  
  3299.  
  3300.  
  3301.  
  3302.  
  3303.  
  3304.  
  3305.  
  3306.  
  3307.  
  3308.  
  3309.  
  3310.  
  3311.  
  3312.  
  3313.  
  3314.  
  3315.  
  3316.  
  3317.  
  3318.  
  3319.  
  3320.  
  3321.  
  3322.                            Bingo 3.10 Reference Manual
  3323.                                        51
  3324.  
  3325.  
  3326.  
  3327.  
  3328.                                  Block Handling
  3329.                                  --------------
  3330.  
  3331.      Marking
  3332.      -------
  3333.           Block marking is extremely flexible.  Three types of marking are
  3334.      supported.  Line marking considers lines to be the smallest
  3335.      indivisible chunks of text.  It is primarily used when editing large
  3336.      sections of program code, since much of this type of editing involves
  3337.      moving lines.
  3338.           Point marking, on the other hand, considers single characters to
  3339.      be the smallest indivisible portions of text.  this is useful for
  3340.      replicating portions of lines, rather than whole lines. 
  3341.           While Point marking "snakes" the mark from one point to the next,
  3342.      Vertical marking lets you define corners of a column-oriented block.
  3343.           There are two methods of marking, governed by the 'conf_automark'
  3344.      function.  If auto marking is turned off, marking proceeds as follows:
  3345.      go to the beginning of the block you wish to mark; execute the
  3346.      appropriate mark function for the block type you are interested in;
  3347.      move to the end of the block you wish to mark; mark again.
  3348.           If auto marking is turned on, things work differently.  Now, when
  3349.      you mark, you turn marking 'on'.  As you move about the file, the
  3350.      block will follow you until you decide to mark the end.  However, you
  3351.      do not have to mark the end of the block; Bingo will simply assume the
  3352.      current position is the other end of the block.
  3353.           You can also use the 'extend_mark' function.  This simply extends
  3354.      the current marking scheme to the current cursor position.  If there
  3355.      is no mark in the file, 'Extend_mark' will display an error message.
  3356.  
  3357.      Operations on Blocks
  3358.      --------------------
  3359.           Bingo supports two slightly different sets of block operations. 
  3360.      The first set will be familiar to users of many programming editors,
  3361.      while the second will bring back memories of any Wordstar compatible
  3362.      editor they may have used.
  3363.           The first set of operations consists of three functions: 'cut',
  3364.      'copy', 'paste'.  'cut' snips the marked region to the block buffer,
  3365.      removing it from the file.  'copy' does the same thing, but it leaves
  3366.      the marked text intact in the file.  In both cases, if nothing is
  3367.      marked and you have this option turned on, Bingo will assume you wish
  3368.      the current line to be line marked.
  3369.           'paste' is very simple: whatever is currently in the block buffer
  3370.      is placed at the current cursor position, based on the marking method
  3371.      used.  If the contents were point marked, the contents are simply
  3372.      'squirted' into the text.  If the contents were line marked, the lines
  3373.      are inserted above the current line.
  3374.           There is also an alternate type of paste operation, that of
  3375.      'paste_replace'.  In this case, the paste buffer's contents overwrite
  3376.      the needed amount of space in the text, rather than squirting between
  3377.      existing text.  This type of pasting will only work for Column and
  3378.      Line marked blocks.  Be careful! You can hurt yourself with this one.
  3379.  
  3380.                            Bingo 3.10 Reference Manual
  3381.                                        52
  3382.  
  3383.  
  3384.  
  3385.  
  3386.           The second type of block operations available are similar in
  3387.      nature to those used by Wordstar-compatible editors.  Block operations
  3388.      consist of three steps: mark the text, move to the destination
  3389.      position, invoke the function.
  3390.           'block_move' moves the currently marked blocked of text to the
  3391.      current cursor position.  'block_copy' does the same thing, except it
  3392.      leaves a copy behind.  'block_move' and 'block_copy' will not allow
  3393.      you to manipulate blocks between files.
  3394.           'block_delete' is functionally identical to Cut, except that it
  3395.      requires that a block be marked; the setting of the auto line cut
  3396.      toggle has no effect on 'block_delete'.
  3397.           Remember that since each file can have independently marked
  3398.      sections of text, you cannot use the 'block_move' and 'block_copy'
  3399.      functions to manipulate text between separate files.
  3400.  
  3401.      Named Buffers
  3402.      -------------
  3403.           In addition to the default paste buffer, Bingo supports 26 named
  3404.      buffers, 'a'-'z'.  In order to change which buffer is currently in
  3405.      use, use the 'name_buffer' function.  Press the letter of the buffer
  3406.      you want, or <return> for the default buffer.  Until you change the
  3407.      buffer, Bingo will use the currently named buffer for all its
  3408.      operations.  All buffers will be saved when a swapping operation is
  3409.      being done.
  3410.  
  3411.      Emacs_yank
  3412.      ----------
  3413.           This function melds the unkill stack and the paste buffer
  3414.      together in the following manner.  If the most recent block
  3415.      operation/deletion was a block operation, 'emacs_yank' works exactly
  3416.      like 'paste', pushing the paste buffer contents into the text.  If the
  3417.      most recent operation was a deletion (word, line, -eol, -bol),
  3418.      'emacs_yank' works like the 'paste_kill' function, pulling text from
  3419.      the undo stack without disturbing its contents.  This allows you to
  3420.      use the deletion commands to manipulate text in concert with the paste
  3421.      buffer operations.  Note that this is not identical to EMACS's 'yank'
  3422.      functionality, but it is useful.
  3423.  
  3424.                                   Function List
  3425.      ----------------------------------------------------------------------
  3426.  
  3427.                                                                   Line_mark
  3428.      ----------------------------------------------------------------------
  3429.      Drop a line marker.  The block will be expanded or shrunk, depending
  3430.      on the last drop made.  Line marks consider the line to be the
  3431.      smallest markable element of text.
  3432.  
  3433.  
  3434.  
  3435.  
  3436.  
  3437.  
  3438.                            Bingo 3.10 Reference Manual
  3439.                                        53
  3440.  
  3441.  
  3442.  
  3443.  
  3444.                                                                  Point_mark
  3445.      ----------------------------------------------------------------------
  3446.      Drop a point marker.  The block will be expanded or shrunk, depending
  3447.      on the last drop made.  Point marks consider the character to be the
  3448.      smallest markable element of text.
  3449.  
  3450.                                                               Vertical_mark
  3451.      ----------------------------------------------------------------------
  3452.      Drop a vertical marker. Vertical, or column, blocks are defined by and
  3453.      upper and an opposing lower corner.
  3454.  
  3455.                                                                 Extend_mark
  3456.      ----------------------------------------------------------------------
  3457.      Extends the current marked block, using whichever marking scheme is in
  3458.      place.  Does nothing if no block is marked.
  3459.  
  3460.                                                                      Unmark
  3461.      ----------------------------------------------------------------------
  3462.      Unmark all text in current buffer.
  3463.  
  3464.                                                                         Cut
  3465.      ----------------------------------------------------------------------
  3466.      Cut the marked text to the block buffer.  The marked text is deleted
  3467.      from the file.  
  3468.  
  3469.                                                                        Copy
  3470.      ----------------------------------------------------------------------
  3471.      Copy the marked text to the block buffer.  The marked text is NOT
  3472.      deleted from the file.
  3473.  
  3474.                                                                       Paste
  3475.      ----------------------------------------------------------------------
  3476.      Pastes the contents of the block buffer into the text at the current
  3477.      position.  If the contents were line marked, the contents will be
  3478.      pasted, as lines, above the current line.
  3479.  
  3480.                                                               Paste_replace
  3481.      ----------------------------------------------------------------------
  3482.      Pastes the contents of the block buffer at the current location,
  3483.      overwriting the needed amount of space.  This is only valid when the
  3484.      paste buffer is Line or Vertical marked.
  3485.  
  3486.                                                                  Block_move
  3487.      ----------------------------------------------------------------------
  3488.      Moves the currently marked blocked of text to the cursor position.
  3489.  
  3490.                                                                  Block_copy
  3491.      ----------------------------------------------------------------------
  3492.      Copies the currently marked blocked of text to the cursor position.
  3493.  
  3494.  
  3495.  
  3496.                            Bingo 3.10 Reference Manual
  3497.                                        54
  3498.  
  3499.  
  3500.  
  3501.  
  3502.                                                                Block_delete
  3503.      ----------------------------------------------------------------------
  3504.      Deletes the currently marked block of text to the block buffer;
  3505.      identical to cut.
  3506.  
  3507.                                                                  Block_save
  3508.      ----------------------------------------------------------------------
  3509.      Writes the currently marked text to a file.
  3510.  
  3511.                                                          Swap_buf_and_block
  3512.      ----------------------------------------------------------------------
  3513.      Takes the currently marked portion, and swaps it with the current
  3514.      contents of the paste buffer.  The two blocks need not be of the same
  3515.      type.
  3516.  
  3517.                                                                Report_bsize
  3518.      ----------------------------------------------------------------------
  3519.      Reports the number of lines and characters (line breaks in point
  3520.      marked blocks count as one character) the currently marked block
  3521.      spans.
  3522.  
  3523.                                                                 Name_buffer
  3524.      ----------------------------------------------------------------------
  3525.      Allows you to change the current paste buffer.  <return> specifies the
  3526.      default buffer, and 'a'-'z' specify their respective buffers.
  3527.  
  3528.                                                                 Buffer_info
  3529.      ----------------------------------------------------------------------
  3530.      Displays various pertinent information about all the paste buffers.
  3531.  
  3532.                                                                 Look_buffer
  3533.      ----------------------------------------------------------------------
  3534.      Displays the contents of the current buffer in a non-editable window. 
  3535.      This only displays up to the first 100 lines in the buffer.
  3536.  
  3537.                                                                  Cut_append
  3538.      ----------------------------------------------------------------------
  3539.      Works exactly like 'Cut', except it appends the marked text to the
  3540.      current contents of the buffer.  The text in the buffer and the marked
  3541.      text must be of the same type.
  3542.  
  3543.                                                                 Copy_append
  3544.      ----------------------------------------------------------------------
  3545.      Just as 'Cut_append', but performs a copy instead.
  3546.  
  3547.  
  3548.  
  3549.  
  3550.  
  3551.  
  3552.  
  3553.  
  3554.                            Bingo 3.10 Reference Manual
  3555.                                        55
  3556.  
  3557.  
  3558.  
  3559.  
  3560.                                                                  Emacs_yank
  3561.      ----------------------------------------------------------------------
  3562.      Melds the unkill stack and the paste buffer together.  If the most
  3563.      recent block operation/deletion was a block operation, 'emacs_yank'
  3564.      works exactly like 'paste', pushing the paste buffer contents into the
  3565.      text.  If the most recent operation was a deletion (word, line, -eol,
  3566.      -bol), 'emacs_yank' works like the 'paste_kill' function, pulling text
  3567.      from the undo stack without disturbing its contents.  This allows you
  3568.      to use the deletion commands to manipulate text in concert with the
  3569.      paste buffer operations.
  3570.  
  3571.                                                                   Mark_word
  3572.      ----------------------------------------------------------------------
  3573.      This marks the current word, using the defined word characters.  Only
  3574.      legal word text is marked.
  3575.  
  3576.  
  3577.  
  3578.  
  3579.  
  3580.  
  3581.  
  3582.  
  3583.  
  3584.  
  3585.  
  3586.  
  3587.  
  3588.  
  3589.  
  3590.  
  3591.  
  3592.  
  3593.  
  3594.  
  3595.  
  3596.  
  3597.  
  3598.  
  3599.  
  3600.  
  3601.  
  3602.  
  3603.  
  3604.  
  3605.  
  3606.  
  3607.  
  3608.  
  3609.  
  3610.  
  3611.  
  3612.                            Bingo 3.10 Reference Manual
  3613.                                        56
  3614.  
  3615.  
  3616.  
  3617.  
  3618.                              Undo and Error Parsing
  3619.                              ----------------------
  3620.  
  3621.      Undo Capabilities
  3622.      -----------------
  3623.           With the advent of version 3.10, Bingo now supports true multi-
  3624.      level undo.  With few exceptions, every operation in Bingo can be
  3625.      completely "undone".  You can designate how many operations will be
  3626.      saved by Bingo, from 0 (no Undo active) to 2048 via the 'conf_undo'
  3627.      function.  This undo stack is global, i.e., all of the buffers share
  3628.      in this one stack in common.  
  3629.           In order to undo an operation, use the 'undo' function to undo
  3630.      the operation.  Use a series of 'undo' functions to rollback a
  3631.      sequence of operations.  As each operation is undone, it is popped off
  3632.      of the undo stack, no longer available.
  3633.           There are a number of technical issues you need to be aware of in
  3634.      conjunction with undo.  They are:
  3635.  
  3636.           a) a few operations, particularly those which execute a single
  3637.           operation over a large number of lines (such as 'shift_block'-ing
  3638.           5 thousand lines) will fail to be saved because of memory
  3639.           constraints.  You will be notified in these cases.
  3640.  
  3641.           b) all block operations will be saved, regardless of the size of
  3642.           the blocks, as these have been specially coded to be supported. 
  3643.  
  3644.           c) Undo uses additional virtual memory space, particularly in
  3645.           cases when it is saving delete operations, as it must save the
  3646.           deleted text so as to make undoing the delete feasible.  Because
  3647.           of this, you may choose to turn undo off in cases when extremely
  3648.           large file manipulation is needed.
  3649.  
  3650.           d) search and replace operations are treated as if each
  3651.           replacement is a single operation t be rolled back.
  3652.  
  3653.      Additional Undo Capability
  3654.      --------------------------
  3655.           The full Undo capability is good for the wholesale rolling back
  3656.      of changes, but some additional deletion recovery is provided: Bingo
  3657.      keeps a stack of recently deleted items; text deleted by 'del_eol',
  3658.      'del_bol', and 'del_line' functions.  This stack is kept in reverse
  3659.      order; that is, the most recently deleted text is placed in top of the
  3660.      unkill stack.
  3661.           Additionally, you have an option regarding text cut to the paste
  3662.      buffer.  Normally, when you place text into the paste buffer (Using
  3663.      the 'cut', 'copy', etc. functions), if the paste buffer already
  3664.      contains something, that text is discarded.  However, if you set the
  3665.      'cut to stack' option on (in the General Config Menu, or with the
  3666.      'conf_cut_stack' function), this text will be pushed onto the stack
  3667.      also.
  3668.  
  3669.  
  3670.                            Bingo 3.10 Reference Manual
  3671.                                        57
  3672.  
  3673.  
  3674.  
  3675.  
  3676.           You can control the size of the unkill stack using the
  3677.      'conf_kill_size' function (1 to 10240 lines), or through the config
  3678.      menus.  You cannot, however, turn it off.
  3679.  
  3680.      Manipulating the Unkill Stack
  3681.      -----------------------------
  3682.           There are three functions available to help you deal with the
  3683.      unkill stack.  'rotate_kill' will pop up a list of the current stack's
  3684.      contents.  By moving the menu bar and hitting return, you can move the
  3685.      selected entry to the top of the stack.
  3686.           'unkill' and 'paste_kill' are very similar.  They take the top
  3687.      member of the stack and insert it in the current position.  If the top
  3688.      member of the stack was a full line, it will be inserted above the
  3689.      current line.  'unkill' also removes the top member from the stack.
  3690.  
  3691.      Error Parsing
  3692.      -------------
  3693.           Bingo provides the capability to automatically parse compiler
  3694.      generated error messages.  The procedure for this is fairly simple.
  3695.           First, you must have a text file containing the error output of
  3696.      the compiler (or assembler) in question.  This usually obtained by
  3697.      running said compiler and redirecting its output to a file.  Bring
  3698.      this file into the editor.
  3699.           Next, call the 'setup_err_parse' function, and give it the name
  3700.      of the file.  If the name matches a file in the ring, Bingo will tell
  3701.      you that error processing is setup properly.
  3702.           Now it is simple; simple call the 'next_error' or 'prev_error'
  3703.      functions.  The following things will happen:
  3704.  
  3705.           1)   Bingo will see if a next (or previous) error can be found. 
  3706.           If not, it will report that no more errors exist.
  3707.           2)   Assuming an error line is found, the file name and line
  3708.           number will be picked out of the line.  Bingo will perform and
  3709.           edit_file operation on the file name, then jump to the offending
  3710.           line.  All of this will happen within the current window.
  3711.           3)   Also, any on-screen window which contains the file being
  3712.           parsed will be updated.  The current error line will be
  3713.           highlighted automatically.
  3714.  
  3715.      As you can see, error parsing is super useful.  For a further example
  3716.      of how it works, see the example macro in the section on the KEYCFG
  3717.      program.
  3718.  
  3719.      Error Parsing Method
  3720.      --------------------
  3721.           Bingo parses error files using a "fuzzy" or "best-guess"
  3722.      algorithm.  It checks each line as follows.
  3723.           First, Bingo attempts to find a valid file name on the line.  The
  3724.      file name must contain a period, and it must have a file extension. 
  3725.      The file name cannot be a .EXE or .COM file, and it may contain the
  3726.      full path specification (new with version 2.10e).
  3727.  
  3728.                            Bingo 3.10 Reference Manual
  3729.                                        58
  3730.  
  3731.  
  3732.  
  3733.  
  3734.           After finding such a file name, Bingo verifies that the named
  3735.      file exists on disk or in the current ring.  If it does, Bingo now
  3736.      begins to look for the line number within the error file.  Bingo will
  3737.      look for the first number to follow the file name, and use this as the
  3738.      line number.
  3739.           If both a file name and a line number are found, the line will be
  3740.      recognized as a valid error/warning line. 
  3741.  
  3742.           This algorithm will work for the Borland and Microsoft
  3743.      developmental tools.  However, in some cases, you may have to consult
  3744.      your manual in order to find what command-line switches have to be set
  3745.      for your compiler to output errors in a usable message format.
  3746.  
  3747.           !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  3748.           !!!!!!!! Note that linker errors do not !!!!!!!!!
  3749.           !!!!!!!! have line numbers, and so will !!!!!!!!!
  3750.           !!!!!!!!      not be recognized.        !!!!!!!!!
  3751.           !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  3752.  
  3753.      However, whenever Bingo encounters a situation where there are no more
  3754.      errors, it will display a message saying so.  Further, it will display
  3755.      a portion of the last non-blank line in the error file on the message
  3756.      line with the "No more Errors" message, so you can verify that all
  3757.      went well.
  3758.  
  3759.  
  3760.                                   Function List
  3761.      ----------------------------------------------------------------------
  3762.  
  3763.                                                             Setup_err_parse
  3764.      ----------------------------------------------------------------------
  3765.      This function will prompt you for a file name.  Bingo will from then
  3766.      on use the named file as the error file.  This must be called before
  3767.      next_error, prev_error, or last_error are called.
  3768.  
  3769.                                                                  Next_error
  3770.      ----------------------------------------------------------------------
  3771.      Moves, within the current window, to the next error as found in the
  3772.      current error file.  If no more errors can be found, Bingo will say
  3773.      so, and display the last non-blank line in the error file.  Otherwise,
  3774.      Bingo will edit the appropriate file into the current window, as well
  3775.      as highlighting the line in the error file being referenced.
  3776.  
  3777.                                                                  Prev_error
  3778.      ----------------------------------------------------------------------
  3779.      Same as error except it moves backward through the error file.
  3780.  
  3781.                                                                  Last_error
  3782.      ----------------------------------------------------------------------
  3783.      Re-displays the last error message, if there was one.
  3784.  
  3785.  
  3786.                            Bingo 3.10 Reference Manual
  3787.                                        59
  3788.  
  3789.  
  3790.  
  3791.  
  3792.                                                                 Rotate_kill
  3793.      ----------------------------------------------------------------------
  3794.      Pops up the current kill stack and allows you to arbitrarily move a
  3795.      line of text to the top of the stack.
  3796.  
  3797.                                                                      Unkill
  3798.      ----------------------------------------------------------------------
  3799.      Inserts the top member of the stack at the current position.  If the
  3800.      top member of the stack was a full line, it is inserted above the
  3801.      current line.  Removes the top member from the stack.
  3802.  
  3803.                                                                  Paste_kill
  3804.      ----------------------------------------------------------------------
  3805.      Inserts the top member of the stack at the current position.  If the
  3806.      top member of the stack was a full line, it is inserted above the
  3807.      current line.  Leaves the stack itself alone.
  3808.  
  3809.                                                                Restore_line
  3810.      ----------------------------------------------------------------------
  3811.      Restores the current line to its former form.
  3812.  
  3813.  
  3814.  
  3815.  
  3816.  
  3817.  
  3818.  
  3819.  
  3820.  
  3821.  
  3822.  
  3823.  
  3824.  
  3825.  
  3826.  
  3827.  
  3828.  
  3829.  
  3830.  
  3831.  
  3832.  
  3833.  
  3834.  
  3835.  
  3836.  
  3837.  
  3838.  
  3839.  
  3840.  
  3841.  
  3842.  
  3843.  
  3844.                            Bingo 3.10 Reference Manual
  3845.                                        60
  3846.  
  3847.  
  3848.  
  3849.  
  3850.                                   File Handling
  3851.                                   -------------
  3852.  
  3853.           Bingo has extensive file handling capabilities, more than almost
  3854.      any other editor available.  Literally, there is little you could want
  3855.      to do with a file which Bingo will not let you do.  
  3856.           A couple of words are in order about the file format.  Bingo
  3857.      cares not at all if the file you are reading is delimited by carriage-
  3858.      return/linefeed pairs or just linefeed characters; Bingo will read
  3859.      both with equal aplomb.  Similarly, Bingo doesn't object to files
  3860.      ending with the EOF character (ASCII 26).  On output, the output
  3861.      format is governed by the configuration settings accessible through
  3862.      the 'conf_eof' and 'conf_lfs' functions. 
  3863.  
  3864.                                   Function List
  3865.      ----------------------------------------------------------------------
  3866.  
  3867.                                                                   Edit_file
  3868.      ----------------------------------------------------------------------
  3869.      Asks for a file name. If the file is already in the ring, it simply
  3870.      switches to it.  If it is not in the ring, it loads the file.
  3871.  
  3872.                                                                 Choose_file
  3873.      ----------------------------------------------------------------------
  3874.      Pops up a list of current files in the ring, and an option for a new
  3875.      file.  Selecting the New File option performs an 'edit_file' function.
  3876.  
  3877.                                                                   Load_file
  3878.      ----------------------------------------------------------------------
  3879.      After asking for a file name, it loads that file from disk.  If the
  3880.      file is already in the ring, the in-memory version is first deleted
  3881.      from memory.
  3882.  
  3883.                                                                 Rename_file
  3884.      ----------------------------------------------------------------------
  3885.      Renames current file.  Does not save it to disk automatically.
  3886.  
  3887.                                                                 Switch_file
  3888.      ----------------------------------------------------------------------
  3889.      Switches to a different file, performing a quit on the current file
  3890.      first.  If you escape out of the quit option, the switch operation
  3891.      will abort.
  3892.  
  3893.                                                                   Save_file
  3894.      ----------------------------------------------------------------------
  3895.      Saves the current file; does not exit.
  3896.  
  3897.                                                                 Modify_save
  3898.      ----------------------------------------------------------------------
  3899.      Saves current file ONLY if it has been modified.
  3900.  
  3901.  
  3902.                            Bingo 3.10 Reference Manual
  3903.                                        61
  3904.  
  3905.  
  3906.  
  3907.  
  3908.                                                                        Quit
  3909.      ----------------------------------------------------------------------
  3910.      Exits current file.  If the file was modified, it will ask you if you
  3911.      wish to save the file; a <return> indicates yes.
  3912.  
  3913.                                                                       Abort
  3914.      ----------------------------------------------------------------------
  3915.      Exits the file, no protection, no save.
  3916.  
  3917.                                                                        File
  3918.      ----------------------------------------------------------------------
  3919.      Saves and exits current file.
  3920.  
  3921.                                                                   Next_file
  3922.      ----------------------------------------------------------------------
  3923.      Moves to the next file in ring.
  3924.  
  3925.                                                                   Prev_file
  3926.      ----------------------------------------------------------------------
  3927.      Moves to the previous file in the ring.
  3928.  
  3929.                                                                    Quit_all
  3930.      ----------------------------------------------------------------------
  3931.      Performs a quit on each file in the ring.
  3932.  
  3933.                                                                   Abort_all
  3934.      ----------------------------------------------------------------------
  3935.      Aborts all files, no questions asks.
  3936.  
  3937.                                                                    File_all
  3938.      ----------------------------------------------------------------------
  3939.      Saves and exits all files.
  3940.  
  3941.                                                                    Save_all
  3942.      ----------------------------------------------------------------------
  3943.      Saves all files.
  3944.  
  3945.                                                             Modify_save_all
  3946.      ----------------------------------------------------------------------
  3947.      Saves each modified file in the ring.
  3948.  
  3949.                                                                 Delete_file
  3950.      ----------------------------------------------------------------------
  3951.      Asks for a file name to delete on disk.
  3952.  
  3953.                                                                    Zap_file
  3954.      ----------------------------------------------------------------------
  3955.      Deletes the disk copy of the current file. 
  3956.  
  3957.  
  3958.  
  3959.  
  3960.                            Bingo 3.10 Reference Manual
  3961.                                        62
  3962.  
  3963.  
  3964.  
  3965.  
  3966.                                                                  Block_load
  3967.      ----------------------------------------------------------------------
  3968.      Loads a file from disk into the current position of the file.
  3969.  
  3970.                                                                  Clean_file
  3971.      ----------------------------------------------------------------------
  3972.      Resets the 'modified' status of the file to FALSE.
  3973.  
  3974.                                                                   Clean_all
  3975.      ----------------------------------------------------------------------
  3976.      Resets the 'modified' status of all files in the ring to FALSE.
  3977.  
  3978.                                                                 Backup_file
  3979.      ----------------------------------------------------------------------
  3980.      Forces a backup attempt for the current file; this will only have an
  3981.      effect if the file's timed backup setting is on.
  3982.  
  3983.                                                                  Backup_all
  3984.      ----------------------------------------------------------------------
  3985.      Forces a backup attempt on each file in the ring.  For each file, this
  3986.      will only have an effect if the file's timed backup setting is on.
  3987.  
  3988.  
  3989.  
  3990.  
  3991.  
  3992.  
  3993.  
  3994.  
  3995.  
  3996.  
  3997.  
  3998.  
  3999.  
  4000.  
  4001.  
  4002.  
  4003.  
  4004.  
  4005.  
  4006.  
  4007.  
  4008.  
  4009.  
  4010.  
  4011.  
  4012.  
  4013.  
  4014.  
  4015.  
  4016.  
  4017.  
  4018.                            Bingo 3.10 Reference Manual
  4019.                                        63
  4020.  
  4021.  
  4022.  
  4023.  
  4024.                                       Info
  4025.                                       ----
  4026.  
  4027.                                   Function List
  4028.      ----------------------------------------------------------------------
  4029.  
  4030.                                                                        Help
  4031.      ----------------------------------------------------------------------
  4032.      The 'help' function attempts to read the file BINGO.HLP located in the
  4033.      same directory as BE.EXE.  This file can consist of anything you wish,
  4034.      and contain up to 1000 lines as you wish (it must fit into memory...).
  4035.  
  4036.                                                                   File_info
  4037.      ----------------------------------------------------------------------
  4038.      This function simply brings up some useful information about the
  4039.      current file.
  4040.  
  4041.                                                                    Sys_info
  4042.      ----------------------------------------------------------------------
  4043.      This function simply brings up some useful information about Bingo in
  4044.      general.
  4045.  
  4046.                                                                 Ascii_table
  4047.      ----------------------------------------------------------------------
  4048.      This function serves a dual purpose.  First, it will pop up a display
  4049.      of all 256 characters, serving as a handy reminder of the characters
  4050.      available.  As you move the cursor over the table, the decimal, octal,
  4051.      hexadecimal, and mnemonic values, if appropriate.
  4052.           Further, by moving onto a particular character and hitting
  4053.      return, you will add this character to the string displayed at the
  4054.      top.  You can build a string up to about 30 characters in length.  The
  4055.      <Backspace> key will delete the last character on the string.  When
  4056.      you press <Escape> to leave, the contents of the string will be
  4057.      inserted into the text at the current cursor position.
  4058.  
  4059.                                                                Version_info
  4060.      ----------------------------------------------------------------------
  4061.      Displays various version information and the name of the person this
  4062.      copy was registered to, if it is a registered copy.
  4063.  
  4064.                                                                   Main_menu
  4065.      ----------------------------------------------------------------------
  4066.      Invokes the main menu.
  4067.  
  4068.                                                              Show_recognize
  4069.      ----------------------------------------------------------------------
  4070.      This function will pop up a display of the currently defined text
  4071.      recognition relationships for the current buffer.
  4072.  
  4073.  
  4074.  
  4075.  
  4076.                            Bingo 3.10 Reference Manual
  4077.                                        64
  4078.  
  4079.  
  4080.  
  4081.  
  4082.                                      Macros
  4083.                                      ------
  4084.  
  4085.           Bingo provides tremendous support for the creation, management,
  4086.      and execution of keyboard macros.  This level of support was initially
  4087.      dictated by my own experiences developing software, and later added to
  4088.      by user feedback.
  4089.           Bingo retains the status of the last function executed internally
  4090.      as a True or False value; you can see this reflected on the far right
  4091.      end of the active status line.  If, during the execution of a macro a
  4092.      function returns a False value, the macro will terminate.  Further, if
  4093.      applicable, the repeat command will terminate.  This allows you to
  4094.      execute macros "until function failure" based on things like trying to
  4095.      move beyond the beginning of the line.
  4096.           Also, you can terminate the execution of a macro by pressing the
  4097.      Scroll Lock key and holding it until the macro terminates.
  4098.  
  4099.      Macro Space
  4100.      -----------
  4101.           Bingo will dynamically increase its macro space to compensate
  4102.      when you add or release memory.  Thus, macro space is limited by
  4103.      available memory.
  4104.  
  4105.      Defining Macros
  4106.      ---------------
  4107.           There are four ways to define macros, all very similar.  You can
  4108.      define the scrap key to hold a macro, a single key to hold a macro,a
  4109.      two key combination to hold a macro, or a three key combination to
  4110.      hold a macro.  Any of these functions will also end a macro definition
  4111.      if one is currently in progress.   Macros can be defined across any
  4112.      number of activities.  Pressing <Escape> at any time as the response
  4113.      to a query from Bingo will end the macro presently being recorded.
  4114.  
  4115.      Ending Macro Definition
  4116.      -----------------------
  4117.           When you wish to end a macro definition, you can use any of the
  4118.      macro functions which would start a macro definition ('onekey_def',
  4119.      'twokey_def', 'threekey_def', 'define_scrap') as well as the
  4120.      'end_macro' function.  It is important to have at least one of these
  4121.      functions directly assigned to a key; if you use them from the menu,
  4122.      you will record the keystrokes leading to them menu as well!
  4123.  
  4124.      Saving Macros
  4125.      -------------
  4126.           Using the single key save and load functions, you can save
  4127.      favorite macros to named files for later recall.  Single saving also
  4128.      saves the key sequence the macro is attached to, and loading it in
  4129.      again will redefine the key.
  4130.  
  4131.  
  4132.  
  4133.  
  4134.                            Bingo 3.10 Reference Manual
  4135.                                        65
  4136.  
  4137.  
  4138.  
  4139.  
  4140.      Saving the Entire Key Set
  4141.      -------------------------
  4142.           Bingo also allows you to save the entire key table, including all
  4143.      key assignments and all macros, for later recall.  Recalling a keyset
  4144.      file will overwrite the entire key table, so be warned.  
  4145.           When you save a keyset file, you can name the keyset file, and
  4146.      you can have it saved in Bingo's home directory or in an arbitrary
  4147.      directory.  If you name it Keycfg.set, it becomes the default file
  4148.      keyset, depending where you put it.  When Bingo starts up, it looks
  4149.      first in the current directory, then in its home directory for
  4150.      KEYCFG.SET.  This allows you to have multiple key configurations in
  4151.      different disk locations while still maintaining one executable.
  4152.  
  4153.      Executing a Macro File
  4154.      ----------------------
  4155.           You may also execute any macro which was single saved to a file
  4156.      at any time.  This executes it one, without disturbing the current key
  4157.      table assignments.  Good for macros used infrequently, but which are
  4158.      very useful.  I have a whole library of interesting ones saved at this
  4159.      point.
  4160.  
  4161.                                   Function List
  4162.      ----------------------------------------------------------------------
  4163.  
  4164.                                                                Define_scrap
  4165.      ----------------------------------------------------------------------
  4166.      Start scrap macro definition.  
  4167.  
  4168.                                                                  Onekey_def
  4169.      ----------------------------------------------------------------------
  4170.      Start single-key macro definition.
  4171.  
  4172.                                                                  Twokey_def
  4173.      ----------------------------------------------------------------------
  4174.      Start two-key macro definition.
  4175.  
  4176.                                                                Threekey_def
  4177.      ----------------------------------------------------------------------
  4178.      Start a three-key macro definition.
  4179.  
  4180.                                                                       Scrap
  4181.      ----------------------------------------------------------------------
  4182.      Execute the scrap macro.
  4183.  
  4184.                                                             Single_key_save
  4185.      ----------------------------------------------------------------------
  4186.      Save a single macro to a file for later recall.  Saves the key it is
  4187.      attached to also.
  4188.  
  4189.  
  4190.  
  4191.  
  4192.                            Bingo 3.10 Reference Manual
  4193.                                        66
  4194.  
  4195.  
  4196.  
  4197.  
  4198.                                                             Single_key_load
  4199.      ----------------------------------------------------------------------
  4200.      Load a single macro from a file.  Overwrites the current definition
  4201.      for the key, if it has one.
  4202.  
  4203.                                                                Key_set_save
  4204.      ----------------------------------------------------------------------
  4205.      Saves entire keyset, including macros, but not the scrap.
  4206.  
  4207.                                                                Key_set_load
  4208.      ----------------------------------------------------------------------
  4209.      Load entire keyset.
  4210.  
  4211.                                                              Run_macro_file
  4212.      ----------------------------------------------------------------------
  4213.      Runs a macro from a file saved with single_key_save.
  4214.  
  4215.                                                                Undefine_key
  4216.      ----------------------------------------------------------------------
  4217.      Undefines a key.
  4218.  
  4219.                                                                   End_macro
  4220.      ----------------------------------------------------------------------
  4221.      Ends the recording of a current macro.  Mostly useless, but it made
  4222.      for a useful menu entry.
  4223.  
  4224.  
  4225.  
  4226.  
  4227.  
  4228.  
  4229.  
  4230.  
  4231.  
  4232.  
  4233.  
  4234.  
  4235.  
  4236.  
  4237.  
  4238.  
  4239.  
  4240.  
  4241.  
  4242.  
  4243.  
  4244.  
  4245.  
  4246.  
  4247.  
  4248.  
  4249.  
  4250.                            Bingo 3.10 Reference Manual
  4251.                                        67
  4252.  
  4253.  
  4254.  
  4255.  
  4256.                                    Navigation
  4257.                                    ----------
  4258.  
  4259.           Navigation in Bingo is very straightforward.  You may move in
  4260.      terms of characters, lines, words, windowfuls, and the entire file. 
  4261.      You can also jump to the beginning and end of a marked block. 
  4262.      Finally, you can jump to a specified line, or by a relative number of
  4263.      lines, or to a column, or by a relative number of columns, or by both
  4264.      lines and columns in the file using the Jump function.
  4265.           In addition, Bingo supports placemarks.  I had never really used
  4266.      placemarks much, or "bookmarks" as they are sometimes called.  But a
  4267.      buddy of mine told me to try them when in big files, and I was
  4268.      impressed.  But the editor I tried them in allowed only one; this is
  4269.      just not enough.  So I went one better.  Actually, I went 9 better.
  4270.           Bingo provides 10 placemarks.  You can drop one or jump to one. 
  4271.      Each placemark defines a file, a line, and a column.  When you try to
  4272.      jump to a placemark and the file it pertains to is not in the ring,
  4273.      the file will be fetched.
  4274.  
  4275.                                   Function List
  4276.      ----------------------------------------------------------------------
  4277.  
  4278.                                                                   Down_page
  4279.      ----------------------------------------------------------------------
  4280.      Moves down one windowful.
  4281.  
  4282.                                                                     Up_page
  4283.      ----------------------------------------------------------------------
  4284.      Moves up one windowful.
  4285.  
  4286.                                                                Cursor_right
  4287.      ----------------------------------------------------------------------
  4288.      Moves right one char; wraps if necessary and if bounce mode is active.
  4289.  
  4290.                                                                 Cursor_left
  4291.      ----------------------------------------------------------------------
  4292.      Moves left one char, wraps if necessary and if bounce mode is active.
  4293.  
  4294.                                                                   Cursor_up
  4295.      ----------------------------------------------------------------------
  4296.      Moves up one line.
  4297.  
  4298.                                                                 Cursor_down
  4299.      ----------------------------------------------------------------------
  4300.      Moves down one line.
  4301.  
  4302.                                                                    Back_tab
  4303.      ----------------------------------------------------------------------
  4304.      Moves back to the previous tab stop.  Does not change the text at all.
  4305.  
  4306.  
  4307.  
  4308.                            Bingo 3.10 Reference Manual
  4309.                                        68
  4310.  
  4311.  
  4312.  
  4313.  
  4314.                                                                  Begin_line
  4315.      ----------------------------------------------------------------------
  4316.      Goes to beginning of line.
  4317.  
  4318.                                                                    End_line
  4319.      ----------------------------------------------------------------------
  4320.      Goes to end of line.
  4321.  
  4322.                                                                 Top_of_file
  4323.      ----------------------------------------------------------------------
  4324.      Jump to top of file.
  4325.  
  4326.                                                                 Bot_of_file
  4327.      ----------------------------------------------------------------------
  4328.      Jump to bottom of file.
  4329.  
  4330.                                                                   Next_word
  4331.      ----------------------------------------------------------------------
  4332.      Goes to beginning of next word.
  4333.  
  4334.                                                                   Prev_word
  4335.      ----------------------------------------------------------------------
  4336.      Goes to beginning of previous word.
  4337.  
  4338.                                                               Top_of_screen
  4339.      ----------------------------------------------------------------------
  4340.      Jumps to the top of screen.
  4341.  
  4342.                                                            Bottom_of_screen
  4343.      ----------------------------------------------------------------------
  4344.      Jumps to the bottom of screen.
  4345.  
  4346.                                                                Top_of_block
  4347.      ----------------------------------------------------------------------
  4348.      Jumps to the top of marked block.
  4349.  
  4350.                                                             Bottom_of_block
  4351.      ----------------------------------------------------------------------
  4352.      Jumps to the bottom of marked block.
  4353.  
  4354.                                                                        Jump
  4355.      ----------------------------------------------------------------------
  4356.      Jump to position, column, line or both.  The format is:
  4357.           [(+/-)row][,(+/-)column]
  4358.      If the number is prefaced with a '+' character, Bingo will jump the
  4359.      relative distance forward.  If the number is prefaced with a '-'
  4360.      character, Bingo will jump the relative distance backwards.  Otherwise
  4361.      the number will be interpreted as an absolute.  Either number, or
  4362.      neither, may be omitted.
  4363.  
  4364.  
  4365.  
  4366.                            Bingo 3.10 Reference Manual
  4367.                                        69
  4368.  
  4369.  
  4370.  
  4371.  
  4372.                                                                 Center_line
  4373.      ----------------------------------------------------------------------
  4374.      Makes the current line the center line of the current window, and
  4375.      repaint the entire screen, all windows.  
  4376.                                                               Begin_of_text
  4377.      ----------------------------------------------------------------------
  4378.      Moves the cursor to the first non-space character on the current line.
  4379.  
  4380.                                                                   Indent_up
  4381.      ----------------------------------------------------------------------
  4382.      Moves to previous line with same indentation scheme as current line.
  4383.  
  4384.                                                                 Indent_down
  4385.      ----------------------------------------------------------------------
  4386.      Moves to next line with same indentation scheme as current line.
  4387.  
  4388.                                                            Snap_to_mouse_xy
  4389.      ----------------------------------------------------------------------
  4390.      Moves the cursor to the current mouse position, changing windows if
  4391.      necessary.
  4392.  
  4393.                                                                Mouse_scroll
  4394.      ----------------------------------------------------------------------
  4395.      Moves the cursor to the mouse position when the mouse button is
  4396.      released;  while the button is depressed, the file will scroll up and
  4397.      down, depending on where the mouse cursor is moved.  The closer the
  4398.      cursor is to the top and bottom (and left/right for horizontal
  4399.      movement) of the window, the faster the file will scroll.
  4400.  
  4401.                                                                  Place_mark
  4402.      ----------------------------------------------------------------------
  4403.      This function will pop up a list of the current definitions of the ten
  4404.      placemarks.  By pressing '0' to '9', you define the selected placemark
  4405.      as the current position & file.  Each placemark contains the file
  4406.      name, the line, the column.
  4407.  
  4408.                                                                   Jump_mark
  4409.      ----------------------------------------------------------------------
  4410.      This function will pop up a list of the defined placemarks and allow
  4411.      you to choose which one '0'-'9' you wish to jump to.  If the specified
  4412.      file name is not in the ring, Bingo will go and get it.
  4413.  
  4414.                                                                   Scroll_up
  4415.      ----------------------------------------------------------------------
  4416.      Scroll the display up one line, keeping the cursor in its same place.
  4417.  
  4418.                                                                 Scroll_down
  4419.      ----------------------------------------------------------------------
  4420.      Scroll the display down one line, keeping the cursor in its same
  4421.      place.
  4422.  
  4423.  
  4424.                            Bingo 3.10 Reference Manual
  4425.                                        70
  4426.  
  4427.  
  4428.  
  4429.  
  4430.                                                                 Scroll_left
  4431.      ----------------------------------------------------------------------
  4432.      Scrolls the screen to left (the text to the right). 
  4433.  
  4434.                                                                Scroll_right
  4435.      ----------------------------------------------------------------------
  4436.      Scrolls the screen to right (the text to the left).
  4437.  
  4438.                                                               Last_position
  4439.      ----------------------------------------------------------------------
  4440.      Returns to the previous cursor position in the current file.
  4441.  
  4442.  
  4443.  
  4444.  
  4445.  
  4446.  
  4447.  
  4448.  
  4449.  
  4450.  
  4451.  
  4452.  
  4453.  
  4454.  
  4455.  
  4456.  
  4457.  
  4458.  
  4459.  
  4460.  
  4461.  
  4462.  
  4463.  
  4464.  
  4465.  
  4466.  
  4467.  
  4468.  
  4469.  
  4470.  
  4471.  
  4472.  
  4473.  
  4474.  
  4475.  
  4476.  
  4477.  
  4478.  
  4479.  
  4480.  
  4481.  
  4482.                            Bingo 3.10 Reference Manual
  4483.                                        71
  4484.  
  4485.  
  4486.  
  4487.  
  4488.                                 System Operations
  4489.                                 -----------------
  4490.  
  4491.           Bingo supports a number of system operations.  While they are not
  4492.      large in number, they are large in utility.
  4493.  
  4494.      Simple Execution and Shelling
  4495.      -----------------------------
  4496.           The 'exec_command' function simply executes a given DOS command
  4497.      line and returns.  It does not do anything fancy, and Bingo will
  4498.      remain in memory (consuming quite a bit of memory) but it is fast and
  4499.      simple for issuing short commands.
  4500.           The 'shell' function is identical to 'exec_command', except it
  4501.      takes no arguments.  It simply gives you a DOS shell.
  4502.  
  4503.      Swap Execution and Shelling
  4504.      ---------------------------
  4505.           More often than not, particularly in the case of executing
  4506.      command-line compilers, you simply can't afford to let Bingo hang
  4507.      around in memory, since it consumes a bit.  So Bingo provides two
  4508.      other methods for executing commands.  While they appear identical in
  4509.      form and function to the previous pair of functions, 'swap_execute'
  4510.      and 'swap_shell', are much more interesting.  
  4511.           While they, too, execute a command or shell to DOS, prior to
  4512.      doing so, they save all relevant information such as copies of the
  4513.      current files, etc., then swap Bingo out of memory.  When this
  4514.      happens, a 3k kernel is left behind to manage things until the command
  4515.      is finished; then it will reload Bingo.  Notice that the method of
  4516.      Bingo swapping out is now much different with version 3.00; thanks to
  4517.      Ralf Brown's excellent SPAWNO swapping routines.
  4518.  
  4519.                                   Function List
  4520.      ----------------------------------------------------------------------
  4521.  
  4522.                                                                       Chdir
  4523.      ----------------------------------------------------------------------
  4524.      Change the currently logged directory.
  4525.  
  4526.                                                                Exec_command
  4527.      ----------------------------------------------------------------------
  4528.      Execute a DOS command, while leaving Bingo completely resident in
  4529.      memory.
  4530.  
  4531.                                                                       Shell
  4532.      ----------------------------------------------------------------------
  4533.      Shell to DOS, leaving Bingo completely resident in memory.
  4534.  
  4535.                                                                Swap_execute
  4536.      ----------------------------------------------------------------------
  4537.      Execute a DOS command while swapping Bingo out, leaving behind an 3k
  4538.      kernel.
  4539.  
  4540.                            Bingo 3.10 Reference Manual
  4541.                                        72
  4542.  
  4543.  
  4544.  
  4545.  
  4546.  
  4547.                                                                  Swap_shell
  4548.      ----------------------------------------------------------------------
  4549.      Shell to DOS while swapping as above.
  4550.  
  4551.  
  4552.  
  4553.  
  4554.  
  4555.  
  4556.  
  4557.  
  4558.  
  4559.  
  4560.  
  4561.  
  4562.  
  4563.  
  4564.  
  4565.  
  4566.  
  4567.  
  4568.  
  4569.  
  4570.  
  4571.  
  4572.  
  4573.  
  4574.  
  4575.  
  4576.  
  4577.  
  4578.  
  4579.  
  4580.  
  4581.  
  4582.  
  4583.  
  4584.  
  4585.  
  4586.  
  4587.  
  4588.  
  4589.  
  4590.  
  4591.  
  4592.  
  4593.  
  4594.  
  4595.  
  4596.  
  4597.  
  4598.                            Bingo 3.10 Reference Manual
  4599.                                        73
  4600.  
  4601.  
  4602.  
  4603.  
  4604.                                     Printing
  4605.                                     --------
  4606.  
  4607.           Prior to version 2.01, there were two functions to print, one for
  4608.      the file and one for a marked block.  As of version 2.01, these have
  4609.      been combined into 'print_file', which prints a block if it is marked,
  4610.      otherwise it prints the file.
  4611.           There are a number of options governing printing.  You can ask
  4612.      for line numbers to be printed, page headers (time, page, file name),
  4613.      and decide whether Bingo should terminate a line with a single
  4614.      linefeed, or with linefeed/carriage return pairs.
  4615.           You can also send standalone linefeed or formfeed character, or
  4616.      send a sequence of ASCII values.
  4617.  
  4618.                                   Function List
  4619.      ----------------------------------------------------------------------
  4620.  
  4621.                                                                  Print_file
  4622.      ----------------------------------------------------------------------
  4623.      Print the current file, or a marked block if there is one, using the
  4624.      current printer settings, to the current destination.  Whenever Bingo
  4625.      encounters a formfeed character, it will assume that is the start of a
  4626.      new page, and start the remainder of the line at the left margin.
  4627.  
  4628.                                                                     Send_lf
  4629.      ----------------------------------------------------------------------
  4630.      Send a line feed character to the destination.
  4631.  
  4632.                                                                     Send_ff
  4633.      ----------------------------------------------------------------------
  4634.      Send a formfeed character to the destination
  4635.  
  4636.                                                               Send_sequence
  4637.      ----------------------------------------------------------------------
  4638.      Send a sequence of character values to the printer; e.g.
  4639.                          12,12,12,12,12
  4640.           sends a series of 5 ASCII 12's (decimal) to the destination
  4641.  
  4642.  
  4643.  
  4644.  
  4645.  
  4646.  
  4647.  
  4648.  
  4649.  
  4650.  
  4651.  
  4652.  
  4653.  
  4654.  
  4655.  
  4656.                            Bingo 3.10 Reference Manual
  4657.                                        74
  4658.  
  4659.  
  4660.  
  4661.  
  4662.                                     Searching
  4663.                                     ---------
  4664.  
  4665.           There are two search algorithms present in Bingo.  One is very
  4666.      simple and very fast, and part of it is hand-coded in assembler for a
  4667.      bit more speed yet.  For 95% of what you want to do, it is just right.
  4668.           However, with the advent of version 2.01, a second search
  4669.      algorithm was added; a regular-expression method.  Regular expressions
  4670.      are a mathematical way to describe strings of text, and are very
  4671.      powerful.  Bingo's algorithm is reliable but not overly speedy; I
  4672.      suggest you keep this in mind when using it.
  4673.           If you are not familiar with regular expressions, I am not going
  4674.      to attempt to explain them to you here.  If, however, you have used
  4675.      them before, I will explain the notations I used in coding Bingo's
  4676.      algorithm.
  4677.           To perform a regexp search, use the 'R' modifier on you search
  4678.      (or replace).  If you use this modifier, the string will be
  4679.      interpreted as follows:
  4680.  
  4681.           -    classes, i.e. [0-9] and 'not' classes, i.e. [~0-9]
  4682.           -    occurrences of once, once or none (?), one or more (+), none
  4683.                or more (*)
  4684.           -    grouping  {}
  4685.           -    ORing of {} groups |
  4686.           -    wild card character .
  4687.           -    match begin and end of lines with ^ and $, respectively
  4688.           -    support for debugging regular expression search 
  4689.                patterns
  4690.           -    along with regular expression searches, you can specify the
  4691.                replacement in terms of the matched text.  '@n' in the
  4692.                replacement pattern places the text matching the nth group.
  4693.                '@@' matches the entire matched text. This allows you to do
  4694.                some nifty text manipulation.
  4695.  
  4696.           For some simple examples, see below.
  4697.  
  4698.           It is easy to limit the search area to a specific range by
  4699.      marking a range of text in any of Bingo's three modes.  Then use the
  4700.      'M' modifier to say you wish to match text only within the Marked
  4701.      area.
  4702.           The 'C' option in the 'search' function will count the number of
  4703.      occurrences of the target string in the rest of the search area.
  4704.           The 'G'lobal option for search and replace operations starts from
  4705.      the current cursor position, not from the top of the file.
  4706.           Try the Search and Macro capability -- it is sharp.
  4707.  
  4708.  
  4709.  
  4710.  
  4711.  
  4712.  
  4713.  
  4714.                            Bingo 3.10 Reference Manual
  4715.                                        75
  4716.  
  4717.  
  4718.  
  4719.  
  4720.      Regular Expression Search and Replace Examples
  4721.      ----------------------------------------------
  4722.           Here are some examples of regular example search and replace.
  4723.  
  4724.      Search for --> [a-z]+/.
  4725.           would match any sequence of one or more letters between 'a' and
  4726.           'z' followed by a single period.
  4727.  
  4728.      Search for --> help[a-z]+/.
  4729.           would match a sequence of 'help' followed by one or more letters
  4730.           then a single period.  It would match 'helpoooooo.' and 'helpp.'
  4731.           but not 'help.'
  4732.  
  4733.      Search for --> 19{87}|{88}
  4734.           would match '19' followed by one occurrence of either '87' or
  4735.           '88'.
  4736.  
  4737.      Search for --> 19{87}*|{88}
  4738.           would match '19' followed by none or more occurrences of '87' or
  4739.           a single occurrence of '88'.  Thus it would match '19',
  4740.           '1987878787', or '1988'.
  4741.  
  4742.      Search for --> .
  4743.           matches any single character. (Note: /. would match a an actual
  4744.           period.)
  4745.  
  4746.      Search for --> ^[a-z]+
  4747.           matches a sequence of 1 or more letters, provided it starts a
  4748.           line.
  4749.  
  4750.      Search for --> ^[a-z]+$
  4751.           matches a sequence of 1 or more letters, provided it starts a
  4752.           line and ends a line.
  4753.  
  4754.      Search for --> ^[a-z]+/.[a-z]+
  4755.           basically matches file names made up of alpha characters, which
  4756.           are found at the beginning of a line.
  4757.  
  4758.      Search for --> ^$
  4759.           matches a blank line.
  4760.                     
  4761.      Search for --> ^.
  4762.           matches a non-blank line.
  4763.  
  4764.      These last two allow you to do some neat stuff using
  4765.      the macro capability, i.e., apply a macro to every
  4766.      non-blank line.
  4767.  
  4768.  
  4769.  
  4770.  
  4771.  
  4772.                            Bingo 3.10 Reference Manual
  4773.                                        76
  4774.  
  4775.  
  4776.  
  4777.  
  4778.      Search for --> {[a-z]+}{/.}{[a-z]+}
  4779.      Replace with -->  @3.@1
  4780.           This will match a sequence of one or more letters, followed by a
  4781.           period, followed by one or more letters (a file name,
  4782.           essentially).  The replace will put the text matching the 3rd
  4783.           group first, then a period, then the text matching the 1st group. 
  4784.           On a file name, this will have the effect of reversing the order
  4785.           of the name and the extension, i.e:
  4786.  
  4787.                filename.txt
  4788.  
  4789.           would become
  4790.  
  4791.                txt.filename
  4792.  
  4793.           since 'filename' would match the first group and 'txt' matches
  4794.           the third group.  
  4795.  
  4796.  
  4797.      Incremental Searching
  4798.      ---------------------
  4799.           Version 3.10 adds an incremental search facility.  This searches
  4800.      forward, finding a match as you extend the string.  Hitting the <TAB>
  4801.      key will cause it to find the next match.  Pressing <Backspace> will
  4802.      backup one match.    Pressing <Return> will end the search and leave
  4803.      you at your current position; Pressing <Escape> will return to where
  4804.      the search began.
  4805.  
  4806.                                   Function List
  4807.      ----------------------------------------------------------------------
  4808.  
  4809.                                                                       Again
  4810.      ----------------------------------------------------------------------
  4811.      Repeat the last search operation.  If none has yet been done, works
  4812.      just like search.  If the last search operation done was a search and
  4813.      replace, only the search portion is done.
  4814.  
  4815.                                                                      Search
  4816.      ----------------------------------------------------------------------
  4817.      Search for text.  Will ask for the target text, and then the
  4818.      modifiers:
  4819.                               A Accent
  4820.                               B Backwards
  4821.                               C Count
  4822.                               D Debug
  4823.                               F search through all Files
  4824.                               I Ignore case
  4825.                               M Marked
  4826.                               R Regexp
  4827.                               T start at the Top of the workspace
  4828.           The 'A' option tells Bingo to highlight the 'found' text until
  4829.  
  4830.                            Bingo 3.10 Reference Manual
  4831.                                        77
  4832.  
  4833.  
  4834.  
  4835.  
  4836.      the next keystroke arrives.
  4837.           The 'B' modifier will search backwards.
  4838.           The 'C' option simply counts the number of occurrences.
  4839.           The 'D' option tells Bingo that, if you also specify regular
  4840.      expression searching, before searching display Bingo's interpretation
  4841.      of your regular expression.
  4842.           The 'F' option tells Bingo to treat all the loaded files as the
  4843.      search space.  This allows Bingo to find the next occurrence, even if
  4844.      it is in another file.
  4845.           The 'I' option tells Bingo to ignore case when searching.
  4846.           The 'M' option tells Bingo to only matched text *completely*
  4847.      within marked text.
  4848.           The 'R' option tells Bingo to interpret the input string as a
  4849.      regular expression.  See the section on searching for more details.
  4850.           The 'T' option tells Bingo to start at the beginning of the
  4851.      search space.  If the 'I' option is also used, this is the bottom of
  4852.      the file; if not, the top of the file.  If the 'F' option is also
  4853.      used, it is the last/first file.
  4854.  
  4855.                                                                     Isearch
  4856.      ----------------------------------------------------------------------
  4857.      Incremental search.  Searches for a match to the target string
  4858.      interactively, as you type in each character, Bingo searches for a
  4859.      match and moves there.  Pressing <TAB> finds the next search; pressing
  4860.      <Backspace> backs up one match.  Pressing <Return> will end the search
  4861.      and leave you at your current position; Pressing <Escape> will return
  4862.      to where the search began.
  4863.  
  4864.                                                               Isearch_files
  4865.      ----------------------------------------------------------------------
  4866.      Works just like Isearch, only it will search across files.  If a match
  4867.      is not found in the current file, it will look in the next, and so on.
  4868.  
  4869.                                                                     Replace
  4870.      ----------------------------------------------------------------------
  4871.      Search and replace text.  Will ask for target, replacement text, and
  4872.      three modifiers:
  4873.                               B Backwards
  4874.                               D Debug
  4875.                               F search across Files 
  4876.                               G Global Search/Replace
  4877.                               I Ignore Case
  4878.                               M Marked
  4879.                               P Preserve
  4880.                               R Regexp
  4881.                               T Top of search space
  4882.           If Global is selected, Bingo will simply replace all matching
  4883.      occurrences with the replacement text.  If not, Bingo will stop at
  4884.      each match and ask:
  4885.                          Yes:      replace and continue.
  4886.                          No:       don't replace, but continue search.
  4887.  
  4888.                            Bingo 3.10 Reference Manual
  4889.                                        78
  4890.  
  4891.  
  4892.  
  4893.  
  4894.                          Only:     Replace this and stop
  4895.                          Quit:     stop, no replacement.
  4896.                          Global:   Continue with global replacement
  4897.  
  4898.           'M', 'R', 'F', 'T' and 'A' options work as in the search case.
  4899.           'P' tells Bingo to preserve the original cursor location and
  4900.      return to it when done with the replace operation.
  4901.           'D' is useful for regular expression work.  It tells Bingo to
  4902.      display its conception of the target string (grouping, classes,
  4903.      occurrence, etc).
  4904.  
  4905.                                                                Search_apply
  4906.      ----------------------------------------------------------------------
  4907.      Will act like the 'search' function, but will ask for either:
  4908.           - a key to apply.
  4909.           - a Bingo command line to execute (as if it were used with the
  4910.           'cmd_line' function).
  4911.           - a Chess command (as if it were used with the 'exec_chess'
  4912.           function).
  4913.      when found.  It will work like the replace function, but instead of
  4914.      replacing, it will execute the given key.  DO NOT use this function
  4915.      while recording a macro.
  4916.  
  4917.                                                             Mark_last_found
  4918.      ----------------------------------------------------------------------
  4919.      His will unmark the file and mark the last found text if you have not
  4920.      moved.
  4921.  
  4922.  
  4923.  
  4924.  
  4925.  
  4926.  
  4927.  
  4928.  
  4929.  
  4930.  
  4931.  
  4932.  
  4933.  
  4934.  
  4935.  
  4936.  
  4937.  
  4938.  
  4939.  
  4940.  
  4941.  
  4942.  
  4943.  
  4944.  
  4945.  
  4946.                            Bingo 3.10 Reference Manual
  4947.                                        79
  4948.  
  4949.  
  4950.  
  4951.  
  4952.                                     Utilities
  4953.                                     ---------
  4954.  
  4955.           Bingo provides large number of utilities to be used to manipulate
  4956.      text.  Some of the functions available can:
  4957.  
  4958.           -    change the case of a block
  4959.           -    strip the high bit from characters in a block
  4960.           -    place tabs within text, and expand tabs within text
  4961.           -    shift blocks a certain number of spaces
  4962.           -    align lines with other lines
  4963.           -    sort blocks, in ascending or descending order, on a
  4964.                particular column
  4965.           -    fill a vertically marked block with a specific character 
  4966.           -    format a paragraph
  4967.           -    count the number of words over a span of lines
  4968.           -    insert the current time and date into the file
  4969.           -    center text
  4970.  
  4971.           The big thing with the utilities is: play with them.  They allow
  4972.      you to do some really useful things to your text,particularly when you
  4973.      are reformatting.  Particularly, entab/detab/indent_tab are very
  4974.      useful when importing files from other systems/editors.  You can take
  4975.      a file with hard tabs in it which assumed a tab size of 8 characters,
  4976.      detab it, change the tab size to 3, entab it, and save it ready for
  4977.      another editor which demands hard tabs with a tab size of 3.
  4978.  
  4979.                                   Function List
  4980.      ----------------------------------------------------------------------
  4981.  
  4982.                                                                       Entab
  4983.      ----------------------------------------------------------------------
  4984.      Compresses the line marked region specified or the entire file by
  4985.      converting spaces to tabs.
  4986.  
  4987.                                                                  Indent_tab
  4988.      ----------------------------------------------------------------------
  4989.      Compresses the leading spaces of the line mark region specified or the
  4990.      entire file by converting into the proper tabs.  Rounds to the nearest
  4991.      tab stop, thus "normalizing" the indention to tab stops.
  4992.  
  4993.                                                                       Detab
  4994.      ----------------------------------------------------------------------
  4995.      Expands the line marked region specified or the entire file by
  4996.      converting tabs to spaces.
  4997.  
  4998.  
  4999.  
  5000.  
  5001.  
  5002.  
  5003.  
  5004.                            Bingo 3.10 Reference Manual
  5005.                                        80
  5006.  
  5007.  
  5008.  
  5009.  
  5010.                                                                 Shift_block
  5011.      ----------------------------------------------------------------------
  5012.      Shifts the specified line marked region the number of columns
  5013.      specified.  Positive numbers indicate right-shifting, negative
  5014.      numbers, left-shifting.  The character 't' is used to signify tab
  5015.      widths '-3t' shifts the block left 3 tab widths.
  5016.  
  5017.  
  5018.                                                                 Lcase_block
  5019.      ----------------------------------------------------------------------
  5020.      Lower cases the marked region.
  5021.  
  5022.                                                                 Ucase_block
  5023.      ----------------------------------------------------------------------
  5024.      Upper cases the marked region.
  5025.  
  5026.                                                                 Fcase_block
  5027.      ----------------------------------------------------------------------
  5028.      Flips the case of the marked region.
  5029.  
  5030.                                                                  Word_count
  5031.      ----------------------------------------------------------------------
  5032.      Counts the words in the line marked region, default the whole file.  A
  5033.      word here is defined as non-whitespace and non-punctuation characters,
  5034.      NOT by the settings of the 'conf_word' function.
  5035.  
  5036.                                                               Strip_highbit
  5037.      ----------------------------------------------------------------------
  5038.      Strips the 8th bit in the line marked region, default the whole file.
  5039.  
  5040.                                                                  Sort_block
  5041.      ----------------------------------------------------------------------
  5042.      Sorts block, ascending or descending, on a given column.
  5043.  
  5044.                                                                 Reform_para
  5045.      ----------------------------------------------------------------------
  5046.      Reformats a block of text to conform to the right margin; a paragraph
  5047.      is defined as text between blank lines.  The total amount of text
  5048.      contained in a single paragraph cannot be larger than 30000
  5049.      characters.  The indention of the first line (the current line) is
  5050.      always preserved.  If Autoindent mode is turned on, the indention of
  5051.      the first line will be preserved for each succeeding line.
  5052.  
  5053.  
  5054.  
  5055.  
  5056.  
  5057.  
  5058.  
  5059.  
  5060.  
  5061.  
  5062.                            Bingo 3.10 Reference Manual
  5063.                                        81
  5064.  
  5065.  
  5066.  
  5067.  
  5068.                                                                      Repeat
  5069.      ----------------------------------------------------------------------
  5070.      Repeats:
  5071.           - a key to apply.
  5072.           - a Bingo command line to execute (as if it were used with the
  5073.           'cmd_line' function).
  5074.           - a Chess command (as if it were used with the 'exec_chess'
  5075.           function).
  5076.      N times.  If N is '*', the function repeats until a search fails.  The
  5077.      function halts repetition on a search failure.  DO NOT use this
  5078.      command while you are recording a macro; you will get unpredictable
  5079.      results when you replay the macro.
  5080.  
  5081.                                                                    Dup_line
  5082.      ----------------------------------------------------------------------
  5083.      Duplicates the current line and increments cursor to the next line.
  5084.  
  5085.                                                                       Align
  5086.      ----------------------------------------------------------------------
  5087.      Slides the line marked region left or right to match indentation with
  5088.      the line immediately above the first marked line.  If no lines are
  5089.      marked, the current line is aligned.
  5090.                                                                 Match_delim
  5091.      ----------------------------------------------------------------------
  5092.      Finds the proper match for a delimiter.  Delimiters are configurable
  5093.      by the 'conf_delims' functions.
  5094.  
  5095.                                                                  Time_stamp
  5096.      ----------------------------------------------------------------------
  5097.      Inserts the current date and time into the text.
  5098.  
  5099.                                                                  Fill_block
  5100.      ----------------------------------------------------------------------
  5101.      Fills a vertically marked block with a specified character.
  5102.  
  5103.                                                                 Center_text
  5104.      ----------------------------------------------------------------------
  5105.      Centers the current non-space text of the current line (or line marked
  5106.      block) on its line, relative to the right margin.
  5107.  
  5108.  
  5109.  
  5110.  
  5111.  
  5112.  
  5113.  
  5114.  
  5115.  
  5116.  
  5117.  
  5118.  
  5119.  
  5120.                            Bingo 3.10 Reference Manual
  5121.                                        82
  5122.  
  5123.  
  5124.  
  5125.  
  5126.                                      Windows
  5127.                                      -------
  5128.  
  5129.      Window_vertical
  5130.      ---------------
  5131.           Bingo provides the ability to split windows vertically.  There
  5132.      are some restrictions, however.  Vertical windows must always exist in
  5133.      pairs; that is, two windows sharing one status line.  They are also
  5134.      even resized together.  This is not a large problem, but you should be
  5135.      aware of it.
  5136.  
  5137.      Window_one and Window_zoom
  5138.      --------------------------
  5139.           While window_one and window_zoom superficially perform the same
  5140.      action, remember that zoom is simply a toggle, while the 'window_one'
  5141.      function eliminates all windows except the current, growing the
  5142.      current window to full size.
  5143.  
  5144.      Window_max
  5145.      ----------
  5146.           This is a new function which is very useful -- it resizes the
  5147.      current window to its maximum dimension by resizing all of the other
  5148.      windows down to their *smallest* dimensions.  Very useful.
  5149.  
  5150.                                   Function List
  5151.      ----------------------------------------------------------------------
  5152.  
  5153.                                                                 Window_edit
  5154.      ----------------------------------------------------------------------
  5155.      This function ask for a file name, then splits the window and
  5156.      essentially performs and edit_file function for the requested file
  5157.      name.
  5158.  
  5159.                                                                 Window_load
  5160.      ----------------------------------------------------------------------
  5161.      Works like window_edit, except it forces a reload of the named file.
  5162.  
  5163.                                                                Window_split
  5164.      ----------------------------------------------------------------------
  5165.      This simply splits the current window in two and uses the current file
  5166.      for both.
  5167.  
  5168.                                                             Window_vertical
  5169.      ----------------------------------------------------------------------
  5170.      Splits the current window vertically.  Windows can only be split so
  5171.      once.
  5172.  
  5173.                                                                Window_close
  5174.      ----------------------------------------------------------------------
  5175.      Closes the current window and expands the above window to use its
  5176.      space.
  5177.  
  5178.                            Bingo 3.10 Reference Manual
  5179.                                        83
  5180.  
  5181.  
  5182.  
  5183.  
  5184.  
  5185.                                                                 Window_zoom
  5186.      ----------------------------------------------------------------------
  5187.      Toggles the display between zoomed mode.  When the display is zoomed,
  5188.      the current window takes up the entire display, but Bingo 'remembers'
  5189.      the rest of the windows and will restore them when zoom mode is
  5190.      toggled again.
  5191.  
  5192.                                                                  Window_one
  5193.      ----------------------------------------------------------------------
  5194.      This function makes the current window the only window, wiping out all
  5195.      other windows.
  5196.  
  5197.                                                                 Window_next
  5198.      ----------------------------------------------------------------------
  5199.      This moves to the next window down, or wraps to the top window if
  5200.      necessary.
  5201.  
  5202.                                                             Window_previous
  5203.      ----------------------------------------------------------------------
  5204.      This moves to the next window up, or wraps to the bottom if necessary.
  5205.  
  5206.                                                                  Window_top
  5207.      ----------------------------------------------------------------------
  5208.      Jumps to the top-most, left-most window.
  5209.  
  5210.                                                               Window_bottom
  5211.      ----------------------------------------------------------------------
  5212.      Jumps to the bottom-most, right-most window.
  5213.  
  5214.                                                               Window_resize
  5215.      ----------------------------------------------------------------------
  5216.      This allows you to resize the current window (and its left or right
  5217.      sibling, if it exists) and the window below (and *its* left or right
  5218.      sibling, if it exists) by 'rubberbanding' the current status line up
  5219.      and down, and left and right.  Note that resizing left and right is
  5220.      new for version 3.10.
  5221.  
  5222.                                                                  Window_max
  5223.      ----------------------------------------------------------------------
  5224.      Resizes the current window to its maximum dimension by shrinking all
  5225.      of the other windows to their smallest dimensions.
  5226.  
  5227.  
  5228.  
  5229.  
  5230.  
  5231.  
  5232.  
  5233.  
  5234.  
  5235.  
  5236.                            Bingo 3.10 Reference Manual
  5237.                                        84
  5238.  
  5239.  
  5240.  
  5241.  
  5242.                                  Extra Functions
  5243.                                  ---------------
  5244.  
  5245.      Pick and Exec
  5246.      -------------
  5247.           This function asks for a function descriptor to execute.  The
  5248.      same function descriptors are used as are used by KEYCFG.  If you give
  5249.      it an unrecognized descriptor, a list of all supported functions are
  5250.      popped up for your convenience.  If you give it substring, such as
  5251.      'win', all functions descriptors which contain 'win' anywhere will be
  5252.      shown; in this case the window functions.  Tie this to an easy-to-
  5253.      remember key and all of Bingo's functions are at your fingertips.  
  5254.           This is also useful when you are trying to remember a particular
  5255.      function descriptor and you don't have the documentation handy.
  5256.  
  5257.      Repeat_last
  5258.      -----------
  5259.           This is a handy function.  It will execute the most-recently-
  5260.      executed function again.  It won't change what that most-recently-
  5261.      executed function was.
  5262.  
  5263.      Box Draw Mode
  5264.      -------------
  5265.           This is an enormously useful capability.  When the
  5266.      'toggle_box_draw' function is executed, you will be asked whether you
  5267.      wish to use:
  5268.           a) erasure mode
  5269.           b) single line drawing
  5270.           c) double line drawing
  5271.           d) any arbitrary character drawing
  5272.      After you make your choice, the 4 cursor movement functions will
  5273.      respond differently.  When you move the cursor up via the 'cursor_up'
  5274.      function, the cursor will move up, but it will trail a line (of the
  5275.      appropriate drawing type) behind.  Corners and intersections will be
  5276.      handled automatically.  The line characters will be placed into the
  5277.      text as if Bingo was in overwrite mode. 
  5278.           As of version 3.10, the AnyChar mode has been added, which will
  5279.      allow you draw with any character from the ASCII table.
  5280.  
  5281.  
  5282.  
  5283.  
  5284.  
  5285.  
  5286.  
  5287.  
  5288.  
  5289.  
  5290.  
  5291.  
  5292.  
  5293.  
  5294.                            Bingo 3.10 Reference Manual
  5295.                                        85
  5296.  
  5297.  
  5298.  
  5299.  
  5300.      Cmd_line
  5301.      --------
  5302.           This function gives you a command line entry space on the status
  5303.      line.  You may enter any valid Bingo function.  You only need to enter
  5304.      enough of the function to make it unique; for example, 'swap_ex' is
  5305.      enough to get you the swap_execute function.
  5306.           Further, you can pass parameters to the function you enter
  5307.      directly on the command line, using the following notation:
  5308.  
  5309.           ~<string>~     loads the string as an argument and follows it
  5310.                          with a carriage return.
  5311.           '<string>'     loads the string as an argument, but does NOT
  5312.                          follow it with a carriage return.  If this
  5313.                          argument is intended to be used in a string-entry
  5314.                          box, Bingo will NOT wait for further input.
  5315.           `<string>`     loads the string as and argument, and then waits
  5316.                          for user input until a carriage return is entered
  5317.                          before proceeding.
  5318.  
  5319.      For example:
  5320.  
  5321.           search ~hello~ ~~        : search for the string 'hello' with the
  5322.                                    default search modifiers.
  5323.  
  5324.           search 'hello' ~~        : \
  5325.           search ~hello~           : - these are the same; both search for
  5326.                                    the string 'hello' but leave you at the
  5327.                                    modifier prompt.
  5328.  
  5329.           search `hello` ~i~       : searches for the string 'hello', but
  5330.                                    waits for user input after entering
  5331.                                    'hello'.  After the user enters a
  5332.                                    carriage return, Bingo continues and
  5333.                                    performs the search using the 'i' ignore
  5334.                                    case option.
  5335.  
  5336.      Another example:
  5337.           conf_autoindent ~~       : toggles the current autoindent setting
  5338.           conf_autoindent 'y'      : turns the autoindent setting on
  5339.  
  5340.      Further, if you need to use any of '`~ in a command line, preface them
  5341.      with a forward slash (/).  If you need to use a forward slash, use
  5342.      two.  For example:
  5343.  
  5344.           search ~search for tilde(/~)~ ~~
  5345.  
  5346.      would search for the string "search for tilde(~)" using the default
  5347.      search modifiers.
  5348.           This new command-line notation may seem a bit cryptic at first,
  5349.      but it is far more flexible than the prior method.  It allows you to
  5350.      execute virtually any Bingo command from the command-line with any
  5351.  
  5352.                            Bingo 3.10 Reference Manual
  5353.                                        86
  5354.  
  5355.  
  5356.  
  5357.  
  5358.      arguments.
  5359.  
  5360.      Text Recognition
  5361.      ----------------
  5362.  
  5363.           Version 3.10 introduces a powerful text recognition system.  Text
  5364.      recognition is the ability for Bingo to "watch" what the user types
  5365.      and take a specified action when a certain character sequence is
  5366.      observed.  In the case of Bingo, you can specify that when a certain
  5367.      string is seen, a certain CHESS function is called.  Since that Chess
  5368.      function can be the 'run' command, the CHESS statement can actually
  5369.      run a CHESS program file.
  5370.  
  5371.           You define text recognition relationships in profile files (see
  5372.      the section on profile files for more information on other uses of
  5373.      profile files) using lines of the form:
  5374.  
  5375.      &recog=<text to recognize>!<chess function to execute>
  5376.  
  5377.      For example, in the profile file for .TST file (PROFILE.TST), you
  5378.      might lose the line:
  5379.  
  5380.      &recall=hello!do_hello_func()
  5381.  
  5382.      would cause upon activation the CHESS function 'do_hello_func' to be
  5383.      called.
  5384.  
  5385.           The <text to recognize> IS case sensitive.  If you need to use an
  5386.      exclamation point in the <text to recognize>, preface it wit a forward
  5387.      slash '/'.  If you need to use a '/' in the text, use two (2) forward
  5388.      slashes.
  5389.  
  5390.           Now, we have discussed how to *define* text recognition.  There
  5391.      are several functions available to let you deal with text recognition. 
  5392.      First, 'show_recognition' will pop up a window showing the current
  5393.      text recognition definitions for the current buffer.
  5394.  
  5395.           The 'conf_recognize' function is very important.  It allows you
  5396.      to choose what type of recognition is active.  You can choose between
  5397.      two types.  The first type of recognition is 'Automatic'.  In this
  5398.      mode, as long as there is at least one text recognition relationship
  5399.      defined Bingo will *always* watch the keyboard input stream looking
  5400.      for a match.  This is often not the ideal solution.
  5401.  
  5402.           The second type of recognition is 'On-Demand'.  In this mode,
  5403.      Bingo normally does not watch the input stream.  Only when another
  5404.      function 'one_recognize' is executed, does Bingo begin to watch the
  5405.      input stream.  Bingo will continue to watch the input stream until it
  5406.      sees a match, and then it will revert to not watching.  This allows
  5407.      you the ability to have a stored bank of definitions you can activate
  5408.      with the touch of a keystroke.
  5409.  
  5410.                            Bingo 3.10 Reference Manual
  5411.                                        87
  5412.  
  5413.  
  5414.  
  5415.  
  5416.  
  5417.                                   Function List
  5418.      ----------------------------------------------------------------------
  5419.  
  5420.                                                                   Pick_exec
  5421.      ----------------------------------------------------------------------
  5422.      This allows you to pick a function descriptor and have it executed.
  5423.  
  5424.                                                                      Global
  5425.      ----------------------------------------------------------------------
  5426.      This allows you to execute any
  5427.           - a key to apply.
  5428.           - a Bingo command line to execute (as if it were used with the
  5429.           'cmd_line' function).
  5430.           - a Chess command (as if it were used with the 'exec_chess'
  5431.           function).
  5432.      globally, throughout all the files in the ring.  When invoked, it asks
  5433.      for a keystroke to execute globally.  The keystroke can invoke a
  5434.      macro, or simple be tied to a function.  For each file in the ring,
  5435.      Bingo will ask if you wish the function to be executed; your options
  5436.      are the same as they are when doing a search and replace operation: 
  5437.           Y         Yes, do operation, go to next file
  5438.           N         No, don't do operation, but do go to next file
  5439.           O         Yes, do the operation, but abort the global operation
  5440.                     afterwards.
  5441.           G         Yes, do the operation, and do it for all remaining
  5442.                     files without asking.
  5443.           Q         Abort the global operation right now.
  5444.  
  5445.                                                                 Query_quote
  5446.      ----------------------------------------------------------------------
  5447.      Inserts an integer or sequence of integers as its raw ASCII character. 
  5448.      The decimal values must be comma delimited.  This function does NOT
  5449.      change the cursor position.
  5450.  
  5451.                                                              Toggle_display
  5452.      ----------------------------------------------------------------------
  5453.      Toggles the display size between 25 lines and 43/50 lines.  Will in
  5454.      all likelihood screw up the cursor shape, since the scan line counts
  5455.      will change.
  5456.  
  5457.                                                                Load_profile
  5458.      ----------------------------------------------------------------------
  5459.      Loads the profile file of your choice, searching first the current
  5460.      directory then Bingo's home directory. 
  5461.  
  5462.  
  5463.  
  5464.  
  5465.  
  5466.  
  5467.  
  5468.                            Bingo 3.10 Reference Manual
  5469.                                        88
  5470.  
  5471.  
  5472.  
  5473.  
  5474.                                                               Write_profile
  5475.      ----------------------------------------------------------------------
  5476.      Saves the text settings of the active buffer to the profile file of
  5477.      your choice in either the current directory or Bingo's home directory. 
  5478.      The settings you can use include the ones from the .INI listing (see
  5479.      the section on BINGO.INI) as well as the text recognition keyword (see
  5480.      the section on text recognition) and one additional one:
  5481.                          &run=<chess_fname>
  5482.      See the Chess documentation for more information on the &run keyword.
  5483.  
  5484.                                                                 Repeat_last
  5485.      ----------------------------------------------------------------------
  5486.      Repeats the last function executed.  
  5487.  
  5488.                                                                Display_file
  5489.      ----------------------------------------------------------------------
  5490.      Will pop up the named file into a scrollable box, similar to the help
  5491.      file.
  5492.  
  5493.                                                                  Exec_chess
  5494.      ----------------------------------------------------------------------
  5495.      This function will execute a single line of Chess code, typically a
  5496.      function or a function with its arguments.
  5497.  
  5498.                                                               One_recognize
  5499.      ----------------------------------------------------------------------
  5500.      This function tells Bingo's text recognition system (when it is in On-
  5501.      Demand mode) to watch for the next match and then go back to On-Demand
  5502.      mode.
  5503.  
  5504.                                                                 View_screen
  5505.      ----------------------------------------------------------------------
  5506.      Allows you to view the DOS screen which was active when you prior to
  5507.      starting Bingo.  This is only available if you have this option turned
  5508.      on via the 'conf_scr_save' function.
  5509.  
  5510.  
  5511.  
  5512.  
  5513.  
  5514.  
  5515.  
  5516.  
  5517.  
  5518.  
  5519.  
  5520.  
  5521.  
  5522.  
  5523.  
  5524.  
  5525.  
  5526.                            Bingo 3.10 Reference Manual
  5527.                                        89
  5528.  
  5529.  
  5530.  
  5531.  
  5532.                         Chess: Bingo's Extension Language
  5533.                         ---------------------------------
  5534.  
  5535.      Introduction
  5536.      ------------
  5537.           This section serves as the reference text for the Chess
  5538.      procedural language used by Bingo.  Chess is a simple yet powerful
  5539.      language with much in common with the C programming language.  While
  5540.      Bingo has been around for a number of years, as it grew more and more
  5541.      powerful I began to see that a procedural language would be necessary
  5542.      for users to fully unlock the power of Bingo.  And so, in November of
  5543.      1991 I began looking into interpreter and compiler theory.
  5544.           Adding a procedural language to an application is not a trivial
  5545.      undertaking.  There are a number of issues which all conflict with
  5546.      each other: the addition couldn't bloat Bingo beyond measure; the
  5547.      language couldn't be too trivial to be useful; Bingo had to work as
  5548.      easily with it as without it.  
  5549.           It was immediately clear that implementing an interpreter was far
  5550.      easier than a compiler.  However, interpreted code is usually far
  5551.      slower than compiled code.  But when I reflected on this, it occurred
  5552.      to me that most of a subprogram would be calls to Bingo functions,
  5553.      which would operate very quickly indeed.  So an interpreter was indeed
  5554.      feasible for what I had in mind.  
  5555.           Modeling the interpreter after the C programming language was
  5556.      also appealing, not just because I am most comfortable programming in
  5557.      C.  I was able to locate several texts which used C as a teaching
  5558.      interpreter.  This made the learning much easier.
  5559.           By April of 1992, I had a working standalone interpreter,
  5560.      designed so it would graft easily onto another application, and I had
  5561.      learned a whole lot about lexical analysis and interpreter theory. 
  5562.      Now all I had to do was graft this onto Bingo!  After a lot of design
  5563.      work, I started implementing it, and within a month it was reasonably
  5564.      complete.  The time since has been spent refining the interpreter,
  5565.      judiciously adding to the system function library, and testing,
  5566.      testing, testing!
  5567.  
  5568.  
  5569.  
  5570.  
  5571.  
  5572.  
  5573.  
  5574.  
  5575.  
  5576.  
  5577.  
  5578.  
  5579.  
  5580.  
  5581.  
  5582.  
  5583.  
  5584.                            Bingo 3.10 Reference Manual
  5585.                                        90
  5586.  
  5587.  
  5588.  
  5589.  
  5590.      Things to Possibly Come
  5591.      -----------------------
  5592.           Obviously, given the design of Chess, adding more library
  5593.      functions is in the future.  Chess's capabilities have to be kept in
  5594.      step with Bingo's own growth.  However, it is paramount that Chess
  5595.      stay relatively small.  The code for Chess added less than 20k in
  5596.      total to Bingo's executable and I don't want that to grow unchecked.
  5597.           This release of Chess is fully functionally, but the code is
  5598.      currently tuned for functionality, not for speed.  Future versions of
  5599.      Chess will be much more optimized for execution speed.
  5600.  
  5601.  
  5602.  
  5603.  
  5604.  
  5605.  
  5606.  
  5607.  
  5608.  
  5609.  
  5610.  
  5611.  
  5612.  
  5613.  
  5614.  
  5615.  
  5616.  
  5617.  
  5618.  
  5619.  
  5620.  
  5621.  
  5622.  
  5623.  
  5624.  
  5625.  
  5626.  
  5627.  
  5628.  
  5629.  
  5630.  
  5631.  
  5632.  
  5633.  
  5634.  
  5635.  
  5636.  
  5637.  
  5638.  
  5639.  
  5640.  
  5641.  
  5642.                            Bingo 3.10 Reference Manual
  5643.                                        91
  5644.  
  5645.  
  5646.  
  5647.  
  5648.      The Body of a Chess Program
  5649.      ---------------------------
  5650.           A Chess program consists of the following format:
  5651.  
  5652.           <type> <global_varname1>
  5653.           ...
  5654.           <type> <global_varnameN>
  5655.           {
  5656.                <type> <local_varname1>
  5657.                ...
  5658.                <type> <local_varnameN>
  5659.                <statement1>
  5660.                ...
  5661.                <statementN>
  5662.           }
  5663.           <function_name1>
  5664.           <argtype> <arg1>
  5665.           ...
  5666.           <argtype> <argN>
  5667.           {
  5668.           }
  5669.           ...
  5670.           <function_nameN>
  5671.           {
  5672.           <argtype> <arg1>
  5673.           ...
  5674.           <argtype> <argN>
  5675.           {
  5676.           }
  5677.  
  5678.      The variables declared as <global_varname> are known as global
  5679.      variables, while the variables declared as <local_varname> are local
  5680.      variables.  Now we will take a look at what comprises these variables
  5681.      and statements.
  5682.  
  5683.  
  5684.  
  5685.  
  5686.  
  5687.  
  5688.  
  5689.  
  5690.  
  5691.  
  5692.  
  5693.  
  5694.  
  5695.  
  5696.  
  5697.  
  5698.  
  5699.  
  5700.                            Bingo 3.10 Reference Manual
  5701.                                        92
  5702.  
  5703.  
  5704.  
  5705.  
  5706.      Variables and Constants and Comments
  5707.      ------------------------------------
  5708.           Like most procedural languages, Chess programs are composed of
  5709.      three basic building blocks, Variables, Constants, and Comments.
  5710.           Variables are locations which hold information.  You can
  5711.      visualize them as shoeboxes with names.  Each of these locations can
  5712.      hold one of two basic types of information, integers (whole numbers)
  5713.      or characters (like the letter 'a').  Additionally, Chess uses
  5714.      'arrays' of variables (groups of 1 or more basic objects) and
  5715.      'pointers' to basic objects.  Arrays and pointers will be discussed in
  5716.      the next section.  Variables which haven't had a value assigned to
  5717.      them always start out loaded with zeros.
  5718.  
  5719.      Integers and Characters:
  5720.  
  5721.           Integer Chess variables are defined like this:
  5722.                int int_var;
  5723.      This defines the variable 'int_var' as a Chess integer.  Chess integer
  5724.      variables are represented internally as 4-byte values able to hold
  5725.      whole-number values in the range of -2147483648 to +2147483647.
  5726.      Character Chess variables are defined like this:
  5727.                char c_var;
  5728.      This defines the variables 'c_var' as a character variable.  Chess
  5729.      character variables are 1-byte values, and the values they can hold
  5730.      equate to the IBM Extended ASCII character set (see Bingo's ASCII
  5731.      Chart for a complete listing).  These letters have integer
  5732.      representation as well, for instance, the character 'A' has s decimal
  5733.      representation of 65.
  5734.           Variable names can be comprised of letters [a-zA-Z], digits [0-
  5735.      9], and the underscore character, and they are case sensitive.  The
  5736.      first 7 characters are significant.  You can define multiple variables
  5737.      on the same line:
  5738.                int int_var1,int_var2;
  5739.  
  5740.      Constants:
  5741.  
  5742.           Constants are numeric, character and string literal values. 
  5743.      Numeric constants consist of an optional negative sign [-] and one or
  5744.      more digits[0-9].  For example:
  5745.           123       12345     -90       -987654321
  5746.      are all integer constants.
  5747.           Character constants consist of a single character, (such as A),
  5748.      between single quotes (').  For example:
  5749.           'A'  'a'  '1'  'p'
  5750.      are all character constants.
  5751.           String constants are the third type of constant Chess supports. 
  5752.      String constants consist of a string of characters enclosed between
  5753.      double quotes.  For example:
  5754.           "Hello!"       "Hi"      "12,345 bottles of Beer"
  5755.      are all string constants.
  5756.  
  5757.  
  5758.                            Bingo 3.10 Reference Manual
  5759.                                        93
  5760.  
  5761.  
  5762.  
  5763.  
  5764.      Comments:
  5765.  
  5766.           Comments are also very important in Chess; they are strings of
  5767.      text in a program which are there for we humans to read, and for Chess
  5768.      to ignore.  Comments help the programmer document what he is doing in
  5769.      the program.  Comments begin with the two-letter sequence '/*' and
  5770.      extend until the end of the current line.  For example:
  5771.           int i;    /* define i as an integer
  5772.      The sequence '/* define i as an integer' is a comment. 
  5773.  
  5774.  
  5775.  
  5776.  
  5777.  
  5778.  
  5779.  
  5780.  
  5781.  
  5782.  
  5783.  
  5784.  
  5785.  
  5786.  
  5787.  
  5788.  
  5789.  
  5790.  
  5791.  
  5792.  
  5793.  
  5794.  
  5795.  
  5796.  
  5797.  
  5798.  
  5799.  
  5800.  
  5801.  
  5802.  
  5803.  
  5804.  
  5805.  
  5806.  
  5807.  
  5808.  
  5809.  
  5810.  
  5811.  
  5812.  
  5813.  
  5814.  
  5815.  
  5816.                            Bingo 3.10 Reference Manual
  5817.                                        94
  5818.  
  5819.  
  5820.  
  5821.  
  5822.      Arrays and Pointers
  5823.      -------------------
  5824.           Using the two basic building block data types, integer and
  5825.      character, you can derive two other types of variables.  Arrays are
  5826.      "lists" of like types, and Pointer variables are variables which hold
  5827.      the address or location of other variables.
  5828.  
  5829.      Arrays:
  5830.  
  5831.           To define a character array, use the following: 
  5832.                char var_name[10];
  5833.      What does this mean?  This means, define a variable named 'var_name'
  5834.      as a list of 10 character blocks.  In Chess, you will deal with
  5835.      'strings' as a data type; a 'string' is a pointer to an array of
  5836.      characters containing a sequence of characters followed by a zero
  5837.      byte.  Hence the term "zero terminated" string.  
  5838.           Similarly, an integer array would look like this:
  5839.                int int_name[20];
  5840.      This would define 'int_name' as a list of 20 integer blocks.
  5841.           So what does this mean?  Well, with arrays, you can access each
  5842.      element individually.  For example:
  5843.                int i[20];
  5844.                i[0]=1;
  5845.                i[19]=2;
  5846.      This code fragment shows that you can access each individual element. 
  5847.      Note that when you define an array N elements long, the elements are
  5848.      numbered 0 to (N-1).
  5849.  
  5850.      Pointers:
  5851.  
  5852.           A *pointer* variable is a variable which holds the address of
  5853.      another variable.  For example, in the declaration:
  5854.           int i[20];
  5855.      i[5], i[6], and i[8] are all Integer variables; however, 'i' all by
  5856.      itself is a pointer to the integer array, called an Integer Pointer. 
  5857.      Similarly, in the declaration:
  5858.           char hello[20];
  5859.      hello[0], hello[5], and hello[9] are all Character variables.  'hello'
  5860.      all by itself is a Character Pointer; a variable which holds the
  5861.      address of a character array.
  5862.           What do you need pointers for?  Well, primarily you use them to
  5863.      pass arguments back and forth to user and library functions.  You will
  5864.      see a lot of this in the sections on functions, but here are some
  5865.      examples:
  5866.           {
  5867.                char temp[80];                a)
  5868.                strcpy(temp,"Hello!");        b)
  5869.           }
  5870.      This program does 2 things.  First, a) declares an array of characters
  5871.      80 characters long.  Then, b) calls the library function 'strcpy'. 
  5872.      'strcpy' is used to copy the contents of one string into another. 
  5873.  
  5874.                            Bingo 3.10 Reference Manual
  5875.                                        95
  5876.  
  5877.  
  5878.  
  5879.  
  5880.      Strings in Chess are similar to those in C, as they are character
  5881.      arrays terminated by a character with a value of zero (0).  So, strcpy
  5882.      will fill in the contents of the array 'temp' with the string
  5883.      "Hello!".  After this function call, temp will look like this:
  5884.           temp[0]='H'
  5885.           temp[1]='e'
  5886.           temp[2]='l'
  5887.           temp[3]='l'
  5888.           temp[4]='o'
  5889.           temp[5]='!'
  5890.           temp[6]=0
  5891.  
  5892.           You can do arithmetic on pointers, similar to C, with on caveat. 
  5893.      Look at this example:
  5894.           {
  5895.                char temp[80];                a)
  5896.                strcpy(temp,"Hello!");        b)
  5897.                msg("%s",temp);               c)
  5898.                temp=temp+1;                  d)
  5899.                msg("%s",temp);               e)
  5900.           }
  5901.      Here we loaded 'temp' with the string "Hello!", just as before, then
  5902.      we did c), using the library function 'msg' to display the contents of
  5903.      'temp, the string "hello!".  Then d) increments temp by one byte.  Now
  5904.      when we execute e), temp points one byte further along than it did,
  5905.      and 'msg' will print out "ello!".  Now, temp[0] is 'e', not 'h'.  
  5906.           Similarly, you can increment integer pointers, but there is
  5907.      something to remember.  Look at this example:
  5908.           {
  5909.                int temp[80];                 a)
  5910.                temp[0]=1;                    b)
  5911.                temp[1]=2;                    c)
  5912.                msg("%ld",temp[0]);           d)
  5913.                temp=temp+4;                  e)
  5914.                msg("%ld",temp[0]);           f)
  5915.           }
  5916.  
  5917.      In this code fragment, a) declares am array of integers.  In b) and c)
  5918.      we set the first and second members of the arrays to 1 and 2
  5919.      respectively. d) using the 'msg' function to print the value of
  5920.      temp[0], which is 1.  e) increments temp by *4* bytes -- this is very
  5921.      necessary as each integer is 4 bytes wide.  Now when we print out
  5922.      temp[0], we get 2, as temp points to a different place.
  5923.  
  5924.  
  5925.  
  5926.  
  5927.  
  5928.  
  5929.  
  5930.  
  5931.  
  5932.                            Bingo 3.10 Reference Manual
  5933.                                        96
  5934.  
  5935.  
  5936.  
  5937.  
  5938.           Sometimes you will wish to declare a pointer without declaring
  5939.      any storage to go along with it.  You can do this in the following
  5940.      way:
  5941.           {
  5942.                char temp[80];           a)
  5943.                char p[0];               b)
  5944.                strcpy(temp,"Hello");    c)
  5945.                p=temp;                  d)
  5946.                msg("%s",p);             e)
  5947.           }
  5948.      Here, a) declares a character array with space for 80 characters.  b)
  5949.      declares a character array with *no* members; this declares 'p' to be
  5950.      a pointer to a character buffer.  c) copies the string "Hello" into
  5951.      'temp'.  d) assigns 'p' to point at 'temp'.  Finally, e) prints the
  5952.      character buffer pointed to by 'p', the string "Hello".
  5953.  
  5954.  
  5955.  
  5956.  
  5957.  
  5958.  
  5959.  
  5960.  
  5961.  
  5962.  
  5963.  
  5964.  
  5965.  
  5966.  
  5967.  
  5968.  
  5969.  
  5970.  
  5971.  
  5972.  
  5973.  
  5974.  
  5975.  
  5976.  
  5977.  
  5978.  
  5979.  
  5980.  
  5981.  
  5982.  
  5983.  
  5984.  
  5985.  
  5986.  
  5987.  
  5988.  
  5989.  
  5990.                            Bingo 3.10 Reference Manual
  5991.                                        97
  5992.  
  5993.  
  5994.  
  5995.  
  5996.      Operators and Expressions
  5997.      -------------------------
  5998.  
  5999.      Operators
  6000.           Operators are used to do mathematical operations, such as
  6001.      subtraction and division.  There are sixteen operators recognized by
  6002.      Chess.  Assuming 'a' and 'b' are declared as integers, they are:
  6003.  
  6004.           Operator/Precedence      Description
  6005.           -------------------      -----------
  6006.           unary +  (1)             When used all by itself before a number
  6007.                                    (or variable), denotes the number as a
  6008.                                    positive.  It is for readability
  6009.                                    purposes.
  6010.  
  6011.           unary -  (1)             Used to show a number (or variable) is
  6012.                                    negative. For example:   -a   to use the
  6013.                                    negative of 'a'.
  6014.  
  6015.           * (2)                    Multiplication.  For example: a*b
  6016.                                    multiples a times b.
  6017.  
  6018.           / (2)                    Division.  For example:  a/b  divides a
  6019.                                    by b.  Fractions are discarded, so 5/3
  6020.                                    is one; 4/3 is also one.
  6021.  
  6022.           % (2)                    Modulo or remainder operator.  a%b
  6023.                                    calculates the remainder of a when
  6024.                                    divided by b.  So 7%3 is 1, and 8%3 is
  6025.                                    2.
  6026.  
  6027.           + (3)                    Addition.  a+b adds a and b together.
  6028.  
  6029.           - (3)                    Subtraction.  a-b subtracts b from a.
  6030.  
  6031.           < (4)                    Less than comparison.  a<b will evaluate
  6032.                                    to 1 if a is less than b, 0 if not.
  6033.  
  6034.           > (4)                    Greater than comparison.  a>b will
  6035.                                    evaluate to 1 if a is greater than b, 0
  6036.                                    if it is not.
  6037.  
  6038.           <= (4)                   Less than or equal comparison.  a<=b
  6039.                                    will evaluate to 1 if a is less than or
  6040.                                    equal to b, 0 if not.
  6041.  
  6042.           >= (4)                   Greater than or equal comparison.  a>=b
  6043.                                    will evaluate to 1 if a is greater than
  6044.                                    or equal to b, 0 if not.
  6045.  
  6046.  
  6047.  
  6048.                            Bingo 3.10 Reference Manual
  6049.                                        98
  6050.  
  6051.  
  6052.  
  6053.  
  6054.           == (4)                   Equal comparison.  a==b evaluates to 1
  6055.                                    if a is equal to b, 0 if not.
  6056.  
  6057.           != (4)                   Not equal comparison.  a!=b will
  6058.                                    evaluate to 1 if a is not equal to b, 0
  6059.                                    if it is.
  6060.  
  6061.           && (4)                   Boolean AND operator.  a&&b evaluates to
  6062.                                    1 if both a and b are nonzero, 0 if
  6063.                                    either or both are 0.
  6064.  
  6065.           || (4)                   Boolean OR operator.  a||b evaluates to
  6066.                                    1 if either a or b, or both, are
  6067.                                    nonzero.  If both are zero, evaluates to
  6068.                                    zero.
  6069.  
  6070.           = (5)                    Assignment.  a=b sets a to be the value
  6071.                                    of b.
  6072.  
  6073.      The precedence value shows the order in which the operators are
  6074.      processed.  For example:
  6075.           7*3+5
  6076.      would evaluate the 7*3 first, since '*' has a precedence higher than
  6077.      '+', then the 21+5 would be evaluated, giving 26.
  6078.           Parenthesis can be used to change the order of operations.  For
  6079.      example:
  6080.           (7*3)+5        evaluates to 26 while
  6081.           7*(3+5)        evaluates to 56.
  6082.  
  6083.      Expressions
  6084.  
  6085.           Expressions are comprised of operators, parenthesis, and values. 
  6086.      Operators and parenthesis were discussed above.  Values are made up
  6087.      several different things:
  6088.           Constants      Variables      Functions
  6089.      Constants were discussed previously, as were variables.  Functions,
  6090.      both user and library, always return a value and work like special
  6091.      variables.  For example:
  6092.           int i;
  6093.           i=(7+8)*happy(1)+hello(2);
  6094.      where 'happy' and 'hello' are function names.
  6095.  
  6096.  
  6097.  
  6098.  
  6099.  
  6100.  
  6101.  
  6102.  
  6103.  
  6104.  
  6105.  
  6106.                            Bingo 3.10 Reference Manual
  6107.                                        99
  6108.  
  6109.  
  6110.  
  6111.  
  6112.      Program Statements
  6113.      ------------------
  6114.  
  6115.           While Chess is very similar to the C programming language, there
  6116.      are only 5 real statements:
  6117.           if                            if-else
  6118.           while                         return
  6119.           break
  6120.      In addition, a valid expression is a valid statement.  
  6121.           Chess statements must be one to a line of text; you cannot have a
  6122.      statement (and this includes an expression) span more than one line. 
  6123.      Each statement may be followed on its line by a comment.  Each
  6124.      statement may be followed by a semicolon (;).
  6125.  
  6126.      IF
  6127.           The 'if' statement is used to make simple decisions.  Its syntax
  6128.      is:
  6129.           if (expression)
  6130.                <statement>
  6131.      If the 'expression' evaluates to a nonzero value, the <statement> will
  6132.      be executed.  If 'expression' evaluates to zero, <statement> will be
  6133.      skipped.  So:
  6134.           int i,j;
  6135.           i=5;
  6136.           j=0;
  6137.           if(i<5)
  6138.                j=10;
  6139.      Here, 'j' will be left the value '0', because the comparison 'i<5'
  6140.      will evaluate to zero.
  6141.  
  6142.      IF-ELSE
  6143.           The 'if-else' statement is also used to make simple decisions. 
  6144.      Its syntax is:
  6145.           if (expression)
  6146.                <statement1>
  6147.           else
  6148.                <statement2>
  6149.      If the 'expression' evaluates to a nonzero value, <statement1> will be
  6150.      executed.  If 'expression' evaluates to zero, <statement2> will be
  6151.      executed. So:
  6152.           int i,j;
  6153.           i=5;
  6154.           j=0;
  6155.           if(i<5)
  6156.                j=10;
  6157.           else
  6158.                j=5;
  6159.      Here, 'j' will be left the value '5', because the comparison 'i<5'
  6160.      will evaluate to zero.
  6161.  
  6162.  
  6163.  
  6164.                            Bingo 3.10 Reference Manual
  6165.                                        100
  6166.  
  6167.  
  6168.  
  6169.  
  6170.      WHILE
  6171.           The 'while' statement is used to repeat the execution of a
  6172.      statement, testing at the beginning of each iteration.  The syntax is:
  6173.           while (expression)
  6174.                <statement>
  6175.      Here, for as long as 'expression' evaluates to a nonzero value,
  6176.      statement will be executed.  Before each <statement> is executed,
  6177.      'expression' will be re-evaluated. So:
  6178.           int i;
  6179.           i=0;
  6180.           while(i<10)
  6181.                i=i+1;
  6182.      Here the statement 'i=i+1' will be executed 10 times, and 'i' will be
  6183.      left with the value '10';
  6184.  
  6185.      DO ... WHILE
  6186.           The 'do ...while' statement is used to repeat the execution of a
  6187.      statement, testing at the end of each iteration.  The syntax is: 
  6188.           do 
  6189.                <statement>
  6190.           while (expression)
  6191.      Here, for as long as 'expression' evaluates to a nonzero value,
  6192.      statement will be executed.  After each <statement> is executed,
  6193.      'expression' will be re-evaluated. So:
  6194.           int i;
  6195.           i=0;
  6196.           do
  6197.                i=i+1;
  6198.           while(i<10)
  6199.      Here the statement 'i=i+1' will be executed 10 times, and 'i' will be
  6200.      left with the value '10';
  6201.  
  6202.      RETURN
  6203.           The 'return' statement is used to interrupt control flow at the
  6204.      current level and return a value.  It is primarily used to terminate
  6205.      the execution of a function.  For example:
  6206.           square (n)
  6207.           int n;
  6208.           {
  6209.                return( n * n );
  6210.           }
  6211.      This function will takes a single integer as an argument, and returns
  6212.      its square.
  6213.  
  6214.  
  6215.  
  6216.  
  6217.  
  6218.  
  6219.  
  6220.  
  6221.  
  6222.                            Bingo 3.10 Reference Manual
  6223.                                        101
  6224.  
  6225.  
  6226.  
  6227.  
  6228.      BREAK
  6229.           The break statement interrupts the execution of the currently
  6230.      looping WHILE statement.  It can only be used within a WHILE loop. 
  6231.      For example:
  6232.  
  6233.           int i,j;
  6234.           i=0;
  6235.           while(1)
  6236.                if(i==10)
  6237.                     break;
  6238.                else
  6239.                     i=i+1;
  6240.           j=0;
  6241.      This will loop until 'i' is equal to 10, then 'break' out of the loop
  6242.      and assign zero to 'j'.
  6243.  
  6244.      Compound Statements
  6245.           In the above definitions, several statements operate on other
  6246.      statements.  In addition to using a single statement for <statement>,
  6247.      you can use multiple statements as a single statement via the '{}'
  6248.      operators.  For example:
  6249.           int i;
  6250.           i=0;
  6251.           while(1){
  6252.                if(i==10)
  6253.                     break;
  6254.                i=i+1;
  6255.           }
  6256.      Here the sequence: { if(i==10) break; i=i+1; } is treated as a single
  6257.      statement.  This allows you to create complex code using the above
  6258.      simple statements.
  6259.  
  6260.  
  6261.  
  6262.  
  6263.  
  6264.  
  6265.  
  6266.  
  6267.  
  6268.  
  6269.  
  6270.  
  6271.  
  6272.  
  6273.  
  6274.  
  6275.  
  6276.  
  6277.  
  6278.  
  6279.  
  6280.                            Bingo 3.10 Reference Manual
  6281.                                        102
  6282.  
  6283.  
  6284.  
  6285.  
  6286.      User Functions
  6287.      --------------
  6288.           Functions are very powerful constructs used to encapsulate common
  6289.      chunks of functionality.  Function always return a value; if they do
  6290.      not explicitly return a value, they will return zero.  They can be
  6291.      used anywhere in an expression, except to the left of an assignment
  6292.      operator.  *User* functions are function which you, the user, write
  6293.      for your own benefit.
  6294.  
  6295.      An Example Chess Program:
  6296.           int i,j;
  6297.           square
  6298.           int n;
  6299.           {
  6300.                return(n*n);
  6301.           }
  6302.           {
  6303.                i=1;
  6304.                while (i<10) 
  6305.                {
  6306.                     j=square(i);
  6307.                     msg("%ld*%ld = %ld",i,i,j);
  6308.                }
  6309.           }
  6310.  
  6311.      Declaration
  6312.           The declaration of a function is as follows:
  6313.                <fname>
  6314.                <argtype> arg1;
  6315.                ...
  6316.                <argtype> argN;
  6317.                {
  6318.                     <statement1>
  6319.                     ...
  6320.                     <statementN>
  6321.                }
  6322.      A function may have zero or more arguments declared.  If there are no
  6323.      arguments passed to it, the parentheses are not necessary.  If you
  6324.      look at the example above, you will note several things.  First of
  6325.      all, to *call* the function, you use the syntax:
  6326.           <function_name> ( arg1 .. argN )
  6327.      the user function 'square' is called in the above example as:
  6328.           j=square(i);
  6329.      This calls the function 'square', passing the argument value of 'i'
  6330.      into 'square'.  This value maps to 'square's first argument, 'n',
  6331.      which is multiplied by itself and the returned, placed into 'j'. 
  6332.           The number of arguments *passed* into a function must equal the
  6333.      number of arguments *declared* for the function.  For example, you
  6334.      could not use:
  6335.           j=square(10,3);
  6336.      as this tries to use 2 arguments for the function square, which is
  6337.  
  6338.                            Bingo 3.10 Reference Manual
  6339.                                        103
  6340.  
  6341.  
  6342.  
  6343.  
  6344.      declared to use only one.
  6345.           Arguments are passed into functions by passing their value. 
  6346.      Therefore, a function cannot change the value of an argument.  For
  6347.      instance, in our example above, 'i' is not changed by the use of 'n*n'
  6348.      in the function.  If we had a function:
  6349.           foo
  6350.           int n;
  6351.           {
  6352.                n=10;
  6353.           }
  6354.      and we called it using:
  6355.           i=5;
  6356.           foo(i);
  6357.      'i' would still have a value of 5, since changes to 'n' within the
  6358.      function 'foo' don't affect the argument 'i'.
  6359.           So how do you have a function change a variable?  To do this, you
  6360.      must pass a *pointer* to the variable you wish to change.  For
  6361.      example:
  6362.           foo
  6363.           int n[0]
  6364.           {
  6365.                n[0]=10;
  6366.           }
  6367.      and we called it using:
  6368.           int i[1];
  6369.           i[0]=4;
  6370.           foo(i);
  6371.      Now 'i[0]' will have the value '10'.  Here what was passed to 'foo'
  6372.      was not the value of 'i[0]', but rather the address of the integer
  6373.      array variable 'i'.
  6374.           You can do the same thing for strings.  Consider:
  6375.           foo
  6376.           char s[0];
  6377.           {
  6378.                strcpy(s,"Hello");
  6379.           }
  6380.      and
  6381.           char temp[80];
  6382.           foo(temp);
  6383.      Here the call to 'foo' passes in the pointer 'temp' to the argument
  6384.      's'.  Then 'foo' uses the system function 'strcpy' to copy in the
  6385.      string "Hello" to the address 's'.  Since 's' maps to 'temp', the
  6386.      string "Hello" is actually copied into the array 'temp'.
  6387.  
  6388.  
  6389.  
  6390.  
  6391.  
  6392.  
  6393.  
  6394.  
  6395.  
  6396.                            Bingo 3.10 Reference Manual
  6397.                                        104
  6398.  
  6399.  
  6400.  
  6401.  
  6402.      Variable Scope
  6403.           There is one important concern to keep in mind when using
  6404.      functions, and that is "variable scope".  To illustrate this, look at
  6405.      this program:
  6406.           int i;
  6407.           hello
  6408.           int n;
  6409.           {                             /* function hello
  6410.                i=i+n;
  6411.           }
  6412.           {                             /* main program
  6413.                int i;
  6414.                i=0;
  6415.                while(i<10){
  6416.                     hello(i);
  6417.                     i=i+1;
  6418.                }
  6419.           }
  6420.      Here you will notice the variable 'i' is declared twice, once as a
  6421.      global value and once as a local value within the main program.  So
  6422.      how does Chess know which one to use?  That is where variable scope
  6423.      comes into play. 
  6424.  
  6425.                               The Rules of Scoping
  6426.           1)   If the reference is within the main program and the variable
  6427.           is declared within the main program, that declaration is used.
  6428.           2)   If the reference is within the main program and the variable
  6429.           is *not* declared within the main program, the global declaration
  6430.           is used.
  6431.           3)   If the reference is within a function and the variable is
  6432.           declared within the function, that declaration is used.
  6433.           4)   If the reference is within a function and the variable is
  6434.           *not* declared within the function, the global declaration is
  6435.           used.
  6436.  
  6437.      So how do these rules apply above?  There are two declarations of the
  6438.      variable 'i'.  When 'i' is referenced within the main program, the
  6439.      main program declaration should be used.  These variable 'i' is
  6440.      separate from the global declaration of 'i' on the first line.  Now
  6441.      when 'i' is referenced within the function 'hello', there is now local
  6442.      declaration within 'hello', so therefore the global declaration of 'i'
  6443.      on the first line is used.
  6444.  
  6445.  
  6446.  
  6447.  
  6448.  
  6449.  
  6450.  
  6451.  
  6452.  
  6453.  
  6454.                            Bingo 3.10 Reference Manual
  6455.                                        105
  6456.  
  6457.  
  6458.  
  6459.  
  6460.      Library Functions
  6461.      -----------------
  6462.           Library functions are functions which are predefined for you by
  6463.      Chess.  There are many, and they can perform a variety of tasks.  See
  6464.      the "Library Function Reference" section for details.  Library
  6465.      functions can be used just like user functions.  If a user function or
  6466.      variable is defined with the same name as a library function, the user
  6467.      function or variable will be ignored.
  6468.  
  6469.  
  6470.  
  6471.  
  6472.  
  6473.  
  6474.  
  6475.  
  6476.  
  6477.  
  6478.  
  6479.  
  6480.  
  6481.  
  6482.  
  6483.  
  6484.  
  6485.  
  6486.  
  6487.  
  6488.  
  6489.  
  6490.  
  6491.  
  6492.  
  6493.  
  6494.  
  6495.  
  6496.  
  6497.  
  6498.  
  6499.  
  6500.  
  6501.  
  6502.  
  6503.  
  6504.  
  6505.  
  6506.  
  6507.  
  6508.  
  6509.  
  6510.  
  6511.  
  6512.                            Bingo 3.10 Reference Manual
  6513.                                        106
  6514.  
  6515.  
  6516.  
  6517.  
  6518.                           Using Chess From Within Bingo
  6519.                           -----------------------------
  6520.  
  6521.           Bingo is a powerful text editing engine and Chess is a very
  6522.      capable procedural language.  How do you use the two in concert to
  6523.      meet your editing needs?
  6524.  
  6525.      - how to run a chess program
  6526.      - how to embed chess calls in macros in keycfg
  6527.      - how to tie programs to keys
  6528.      - show all the power of the 'run' command
  6529.  
  6530.  
  6531.      Chess Code in a *.CFG File
  6532.      --------------------------
  6533.           The first place Chess program code can exists is in your .CFG
  6534.      file, which KEYCFG turns into a .SET file.  This is where you place
  6535.      the Chess functions you wish to be able to execute within a Bingo
  6536.      editing section.  The way this is done is by enclosing a full chess
  6537.      program, or just a collection of Chess subfunctions in your .CFG file. 
  6538.      The code itself is placed between the two lines:
  6539.           chess-begin
  6540.      and
  6541.           chess-end
  6542.      each on a line alone. For example:
  6543.  
  6544.      <normal Keycfg key assignments...>
  6545.      chess-start
  6546.      char temp[80];
  6547.      {                                  /* main program
  6548.           msg("Bingo has started up!");
  6549.           getkey();
  6550.      }
  6551.      /* this function will run the current file as subprogram.
  6552.      run_current
  6553.      {
  6554.           char temp[80],name[20];       /* declare working variables
  6555.           int i;
  6556.  
  6557.           bingo("modify_save");         /* save current file if dirty
  6558.           i=ask("file_path",temp)       /* get the file's path
  6559.           ask("file_name",name)         /* get the file's name
  6560.           strcpy(temp+i,name);          /* add the name to the path
  6561.           return(run(temp));            /* run the file and return
  6562.      }
  6563.  
  6564.  
  6565.  
  6566.  
  6567.  
  6568.  
  6569.  
  6570.                            Bingo 3.10 Reference Manual
  6571.                                        107
  6572.  
  6573.  
  6574.  
  6575.  
  6576.      show_count                    /* function to count off
  6577.      int n;                        /* one parameter
  6578.      {                             /* start function
  6579.           int i;                   /* declare an int
  6580.           i=1;                     /* start at 1
  6581.           while (i<=n){            /* until n...
  6582.                msg("Now at %ld!",i);    /* show the value
  6583.                getkey();                /* wait for a keystroke
  6584.                i=i+1;                   /* add 1 to i
  6585.           }
  6586.           msg("All done!!!!");     /* all finished!
  6587.           getkey();                /* wait for a final keystroke
  6588.      }                             /* end of the function
  6589.      chess-end
  6590.  
  6591.           Here the code in the main body of the program will be executed
  6592.      when Bingo starts up.  The functions 'run_current' and 'show_count' is
  6593.      defined but not actually used by the start up code.
  6594.  
  6595.      Attaching Chess Functions to Keystrokes
  6596.      ---------------------------------------
  6597.           In the above example the function 'run_current' was defined
  6598.      without being directly used.  It is easy to attach this, or any other
  6599.      defined Chess function, to a specific set of keystrokes.  You do this
  6600.      via Keycfg such as:
  6601.           #e   run_current();
  6602.      would define the Alt-e keystroke combination to run the function
  6603.      'run_current' with no arguments.  Likewise:
  6604.           #c   show_count(9);
  6605.      defines the Alt-c combination to invoke the function 'show_count'
  6606.      function with an argument of 9.
  6607.  
  6608.      The Chess Command Line in Bingo
  6609.      -------------------------------
  6610.           From within Bingo itself, you can execute an arbitrary Chess
  6611.      function, with or without arguments, with no problem.  The function
  6612.      used to do this is 'exec_chess'.  This function will present a command
  6613.      line, on which a single Chess function call and its arguments can be
  6614.      entered.  For example, assuming the above code was entered in the .CFG
  6615.      file and compiled to a .SET file by KEYINFO, this line:
  6616.           show_count(4);
  6617.      would invoke the 'show_count' function with an argument of 4.
  6618.  
  6619.  
  6620.  
  6621.  
  6622.  
  6623.  
  6624.  
  6625.  
  6626.  
  6627.  
  6628.                            Bingo 3.10 Reference Manual
  6629.                                        108
  6630.  
  6631.  
  6632.  
  6633.  
  6634.      Chess Program Files
  6635.      -------------------
  6636.           One place Chess program code can reside is in your .CFG file
  6637.      (which is turned into a .SET file); another is in a Chess program
  6638.      file.  A Chess program file is a text file containing a Chess
  6639.      function.  For example:
  6640.  
  6641.      --------------- cut here ------------------------------------------
  6642.      /* this routine functions the same as HEXKEY.COM
  6643.      /* it displays the hex and decimal value of a keystroke
  6644.      {     
  6645.           int i;
  6646.           msg("Press any key ... (Escape exits)");
  6647.           i=getkey();
  6648.           while((i%256)!=27)
  6649.           {
  6650.                msg("Value is %04lx [%06ld] ... Press a key ...",i,i);
  6651.                i=getkey();
  6652.           }
  6653.      }
  6654.      --------------- cut here ------------------------------------------
  6655.  
  6656.      This program duplicates the functionality of the HEXKEY.COM program --
  6657.      it outputs the scan code/ASCII value of a keystroke.  It will loop
  6658.      until you press the Escape key.  This program is included with the
  6659.      distribution of Bingo as HEXKEY.CHS.  To run this program (or any
  6660.      other Chess program) from inside Bingo, use the Chess interpreter. 
  6661.      When the Chess interpreter prompts you for input, use the Chess system
  6662.      call 'run'.  For example, in this case you would use the 'exec_chess'
  6663.      function and the input:
  6664.           run("hexkey.chs");
  6665.      This is assuming HEXKEY.CHS is in the current directory.  *Any* Chess
  6666.      program file can be run from within Bingo in this manner.
  6667.  
  6668.      Attaching Chess Functions to Profile Files
  6669.      ------------------------------------------
  6670.           Another very powerful way to execute Chess files is through a
  6671.      profile file.  Profile files are discussed in detail in the Bingo
  6672.      manual under the 'write_profile' function.  One of the parameters
  6673.      which can be set in a profile file is the '&run' parameter.  This
  6674.      parameter is used to name a file containing a Chess program to
  6675.      execute.  The syntax for using this in the profile file is:
  6676.           &run=c:\test.chs
  6677.      This instructs Bingo to execute the Chess program contained in
  6678.      "c:\test.chs" when the profile file is loaded.  Remember, profile
  6679.      files are loaded based on a file's extension.
  6680.  
  6681.  
  6682.  
  6683.  
  6684.  
  6685.  
  6686.                            Bingo 3.10 Reference Manual
  6687.                                        109
  6688.  
  6689.  
  6690.  
  6691.  
  6692.      Running a Chess File on Start Up
  6693.      --------------------------------
  6694.           Finally, you can tell Bingo to directly execute a Chess program
  6695.      file using the '-c' command line flag.  For example:
  6696.           be -cc:\test.chs
  6697.      will run the Chess program file "c:\test.chs" on start up.  Note that
  6698.      you may only run one Chess file on start up, though of course that
  6699.      program could run as many others as it wanted, using the Chess library
  6700.      function 'run'.
  6701.  
  6702.      Order of Execution on Start Up
  6703.      ------------------------------
  6704.           On start up, both keyboard macros and Chess programs can be start
  6705.      up automatically.  It is important to know the order in which this
  6706.      will occur.  The order is as follows:
  6707.           1) macro files entered per file via the '-x' flag
  6708.           2) Chess start up code (main program code from .CFG file)
  6709.           3) line/column commands per file via the '-p' flag
  6710.           4) Chess file for each profile file loaded
  6711.  
  6712.      Debugging Chess Programs
  6713.      ------------------------
  6714.           In order to make developing Chess programming easier, a
  6715.      rudimentary tracing function has been provided, accessed through the
  6716.      'conf_chess_trace' function.  When this option is turned on, prior to
  6717.      execution of each line of Chess code a dialogue box will be popped up
  6718.      showing the line number and the line of code.  If you press the
  6719.      'Enter' key, execution will continue.  Pressing Escape will abort the
  6720.      execution.
  6721.  
  6722.  
  6723.  
  6724.  
  6725.  
  6726.  
  6727.  
  6728.  
  6729.  
  6730.  
  6731.  
  6732.  
  6733.  
  6734.  
  6735.  
  6736.  
  6737.  
  6738.  
  6739.  
  6740.  
  6741.  
  6742.  
  6743.  
  6744.                            Bingo 3.10 Reference Manual
  6745.                                        110
  6746.  
  6747.  
  6748.  
  6749.  
  6750.                            Library Function Reference
  6751.                            --------------------------
  6752.  
  6753.      Bingo from within Chess
  6754.      -----------------------
  6755.           Normally, the best way to call Bingo functions from within Chess
  6756.      is by using the function name directly, capitalizing the first letter
  6757.      of the function name.  For example:
  6758.           {
  6759.                Edit_file("temp.");
  6760.                Top_of_file();
  6761.                Begin_line();
  6762.                Replace("~hello~ ~goodbye~ ~ig~");
  6763.                File();
  6764.           }
  6765.      This Chess program file loads the file TEMP., goes to the top of the
  6766.      file, replaces each occurrence of "hello" with "goodbye", then saves
  6767.      the file and exits.
  6768.           Note that as an argument, you may use the same command line input
  6769.      as is normally used in the 'cmd_line' function.  See the section on
  6770.      'cmd_line' for a complete description of this notation.
  6771.                                                                         Ask
  6772.      ----------------------------------------------------------------------
  6773.           Format:   int ask(char what[], ...) 
  6774.      Description:   Used to 'ask' the status of various internal
  6775.      Bingo/Chess variables.  Over 50 variables, both text and integer, are
  6776.      available for your inspection.  'Ask' can be used only to retrieve
  6777.      values of system variables; it cannot set them.  
  6778.           The calling sequence may differ for each variable, but generally
  6779.      they are of the format:
  6780.                i=ask(<ask argument>,[possible extra arguments...])
  6781.      as in
  6782.                i=ask("file_new") and
  6783.                i=ask("file_name",dest)
  6784.      The first of these checks whether the current file is new (returning 1
  6785.      for True) while the latter places the current file's name into the
  6786.      character buffer 'dest', returning the length of the name.
  6787.  
  6788.                                                                        Atoi
  6789.      ----------------------------------------------------------------------
  6790.           Format:   int atoi(char aval[])   
  6791.      Description:   Converts the ASCII string representation of a number
  6792.      into its integer equivalent.  For example, suppose the character
  6793.      buffer test[80] contains the string "12345".  Then the call
  6794.           i=atoi(test)
  6795.      would return the integer value 12,345 into the integer variable 'i'.
  6796.  
  6797.  
  6798.  
  6799.  
  6800.  
  6801.  
  6802.                            Bingo 3.10 Reference Manual
  6803.                                        111
  6804.  
  6805.  
  6806.  
  6807.  
  6808.                                                                       B_cmd
  6809.      ----------------------------------------------------------------------
  6810.           Format:   int b_cmd(char cmd[],...) 
  6811.      Description:   Used to execute Bingo commands from within Chess.  For
  6812.      example:
  6813.           i=b_cmd("down_page");
  6814.      would attempt to execute the Bingo command 'down_page'.  The
  6815.      True/False return value of 'down_page' will be returned and placed in
  6816.      the integer variable 'i'.  To execute a Bingo command and preload
  6817.      arguments, make use of the Chess functions 'Key' and 'Str'.  For
  6818.      example:
  6819.           i=b_cmd("swap_execute",str("dir/p"),key("return"));
  6820.      would execute the command "dir/p", swapping out to DOS.  The return
  6821.      value would be placed in 'i'.  See the sections of 'Str' and 'Key'
  6822.      respectively for a more in-depth discussion of how they work.
  6823.           'b_cmd' is an acceptable method of executing a Bingo function
  6824.      from within Chess, a better method is described in the section "Bingo
  6825.      from within Chess".
  6826.  
  6827.                                                                        Beep
  6828.      ----------------------------------------------------------------------
  6829.           Format:   int beep(void) 
  6830.      Description:   Sounds a beep on the PC speaker, using Bingo's current
  6831.      frequency and duration settings.  Always returns integer 1.
  6832.  
  6833.                                                                    Box_pick
  6834.      ----------------------------------------------------------------------
  6835.           Format:   int box_pick(char title[],int style,int start,
  6836.                          char pick1[], ... char pickN[])
  6837.      Description:   Used to allow the user to pick from a set of options. 
  6838.      Displays a dialogue box, with one line for each choice.  You may pick
  6839.      from 3 different styles:
  6840.           1 --> display only
  6841.           2 --> display a menu bar, with Return selecting the choice
  6842.           3 --> display a menu bar, but also allow the first character of
  6843.      each choice to select a choice.
  6844.           The 'start' parameter allows control over where the menu bar in
  6845.      styles 2 and 3 begins, with 0 being the first possibility, 1 the
  6846.      second possibility, and so on.  After the first 3 arguments, any
  6847.      number of character buffer arguments may be added.  These are the
  6848.      possible choices.  For example:
  6849.           i=box_pick("Test choices",2,0,"Choice 1",Choice 2","Choice 3");
  6850.      would allow the user to choose from between 3 choices ("Choice 1",
  6851.      "Choice 2", "Choice 3") using a menu bar.  
  6852.           'box_pick' returns the number of the choice made, with 0 being
  6853.      the first, 1 the second, etc.  If the user presses Escape, a -1 is
  6854.      returned.
  6855.           Be aware there is an upper limit of about 40 on the number of
  6856.      arguments you can use.  When you need to choose from a larger list of
  6857.      choices, use the 'pick_file' function.
  6858.  
  6859.  
  6860.                            Bingo 3.10 Reference Manual
  6861.                                        112
  6862.  
  6863.  
  6864.  
  6865.  
  6866.                                                                  Clear_regs
  6867.      ----------------------------------------------------------------------
  6868.           Format:   int clear_regs()
  6869.      Description:   Used to clear each of the Chess working copies of the
  6870.      internal 80x86 registers to zero (0).  
  6871.  
  6872.                                                               Gen_interrupt
  6873.      ----------------------------------------------------------------------
  6874.           Format:   int gen_interrupt(int int_num);
  6875.      Description:   Generates an 80x86 interrupt, specifically, it
  6876.      generates interrupt number 'int_num'.  Prior to generating the
  6877.      interrupt, the registers are loaded with the values in Bingo's
  6878.      internal working copies, and after the interrupt, the values are saved
  6879.      in Bingo's internal working copies.  This function is very powerful
  6880.      and can be used to do a great many things, but you must be VERY
  6881.      CAREFUL!  This function if used improperly can have catastrophic
  6882.      results.
  6883.  
  6884.                                                                     Get_str
  6885.      ----------------------------------------------------------------------
  6886.           Format:   int get_str(char dest[],char prompt[],int max) 
  6887.      Description:   Used to ask for string input from the user via Bingo's
  6888.      internal dialogue box.  'get_str' will place the string in the 'dest'
  6889.      character buffer.  'prompt' will be used as a prompt string to tell
  6890.      the user what you are asking for.  'max' is the maximum number of
  6891.      characters allowed.  'dest' must have room for 'max' + 1 characters.
  6892.      For example:
  6893.           char ret[21];
  6894.           int i;
  6895.           ret[0]=0;
  6896.           i=get_str(ret,"What is your name?",20);
  6897.      declares a character buffer with room for 21 characters, an integer,
  6898.      sets the char buffer 'ret' to empty, then asks for the users name, no
  6899.      longer than 20 characters, placing the result in the buffer 'ret'. 
  6900.      'get_str' returns the character last pressed.
  6901.  
  6902.                                                                   Get_yesno
  6903.      ----------------------------------------------------------------------
  6904.           Format:   int box_yesno(char text[],int default) 
  6905.      Description:   Asks the user a yes/no question, allowing only yes, no,
  6906.      and abort as return values.  It displays the text in the character
  6907.      buffer 'text' and a choice of Yes/No.  The default choice is No if the
  6908.      'default' argument is 0, Yes if the 'default' argument is 1.  The user
  6909.      can press 'y' for Yes, 'n' for No, Return for the current option, or
  6910.      Escape to abort.
  6911.           If the user chooses Yes, 'box_yesno' will return 1. If the user
  6912.      chooses No, it will return 0.  If the user hits Escape, 'box_yesno'
  6913.      will return -1.
  6914.  
  6915.  
  6916.  
  6917.  
  6918.                            Bingo 3.10 Reference Manual
  6919.                                        113
  6920.  
  6921.  
  6922.  
  6923.  
  6924.                                                                    Get_char
  6925.      ----------------------------------------------------------------------
  6926.           Format:   int box_char(char text[])  
  6927.      Description:   Displays the contents of the character buffer 'text' on
  6928.      the screen, in a dialogue box.  It waits for a keystroke, and returns
  6929.      the ASCII value of the keystroke.
  6930.  
  6931.                                                               Get_curr_text
  6932.      ----------------------------------------------------------------------
  6933.           Format:   int get_curr_text(char dest[],int len) 
  6934.      Description:   Places a copy of 'len' characters, starting from the
  6935.      current file's current cursor position, into the destination character
  6936.      buffer 'dest'.  If the current line does not contain 'len' characters
  6937.      past the current cursor position, the return buffer will be padded
  6938.      with spaces on the right side.
  6939.  
  6940.                                                                   Get_fname
  6941.      ----------------------------------------------------------------------
  6942.           Format:   int get_fname(char dest[], char prompt[],int defok,
  6943.                          int wildok)
  6944.      Description:   Allows you to make use of Bingo's file name validation
  6945.      and directory list-picking intrinsics.  This will prompt the user for
  6946.      a file name using 'prompt'.  If the 'defok' flag is True (nonzero) and
  6947.      the file name has no extension, Bingo will attempt to use the defined
  6948.      default extension ('conf_def_ext') and fine a match.  If 'wildok' is
  6949.      False (zero) and wild card characters are present, 'get_fname' will
  6950.      present the user with a directory list-picker.  Once a selection has
  6951.      been made, the selection will be placed in the character buffer
  6952.      'dest'.  
  6953.           'get_fname' returns an integer greater than or equal to zero for
  6954.      True, less than zero for False.
  6955.  
  6956.                                                                     Get_reg
  6957.      ----------------------------------------------------------------------
  6958.           Format:   int get_reg(char reg_name[]); 
  6959.      Description:   Returns the integer value of Bingo's internal working
  6960.      copy of the 80x86 register named in reg_nam.  Se 'set_re' for a list
  6961.      of the names of valid registers.
  6962.  
  6963.                                                                    Get_text
  6964.      ----------------------------------------------------------------------
  6965.           Format:   int get_text(int line,int column,char dest[],int len); 
  6966.      Description:   Places a copy of 'len' characters, starting from the
  6967.      current file's 'line' and 'column' position, into the destination
  6968.      character buffer 'dest'.  If the 'line' does not contain 'len'
  6969.      characters past the 'column' position, the return buffer will be
  6970.      padded with spaces on the right side.
  6971.  
  6972.  
  6973.  
  6974.  
  6975.  
  6976.                            Bingo 3.10 Reference Manual
  6977.                                        114
  6978.  
  6979.  
  6980.  
  6981.  
  6982.                                                                      Getkey
  6983.      ----------------------------------------------------------------------
  6984.           Format:   int getkey(void) 
  6985.      Description:   Waits for a returns the value of a keypress.  Whether
  6986.      the extended keyboard BIOS is utilized is dependent on Bingo's setting
  6987.      ('conf_key_bios').  This value is not simply the 8-bit ASCII value of
  6988.      the keypress, but the 16-bit scan-code/ASCII combination.  The
  6989.      HEXKEY.COM utility will help in discerning particular key-values.
  6990.  
  6991.                                                                        Itoa
  6992.      ----------------------------------------------------------------------
  6993.           Format:   int itoa(int val,char dest[]) 
  6994.      Description:   Converts a character buffer representation of a number
  6995.      into its integer equivalent.  For example:
  6996.           int i;
  6997.           char temp[20];
  6998.           strcpy(temp,"12345");
  6999.           i=atoi(temp);
  7000.      will leave 'i' with the value 12,345.
  7001.  
  7002.                                                                         Key
  7003.      ----------------------------------------------------------------------
  7004.           Format:   int key(char s[]) 
  7005.      Description:   This is a specialized function very similar to 'str'. 
  7006.      It is used in conjunction with 'b_cmd' to pass keystrokes to intrinsic
  7007.      Bingo commands.  For example:
  7008.           b_cmd("window_resize",key("down_arrow"),
  7009.                key("down_arrow"),key("return"));
  7010.      would resize the current window to be 2 lines bigger (assuming there
  7011.      was room, of course).  The series of 'key' statements "preload" the
  7012.      keystrokes shown in the order shown.  Allowable key names currently
  7013.      include:
  7014.                return
  7015.                escape
  7016.                up_arrow
  7017.                down_arrow
  7018.                left_arrow
  7019.                right_arrow
  7020.                ctrl_home
  7021.                delete
  7022.                end
  7023.                home
  7024.                tab
  7025.      Note: In the above example, remember that the command would have to be
  7026.      all on the same line to be properly interpreted by Chess.
  7027.  
  7028.                                                                      Memcpy
  7029.      ----------------------------------------------------------------------
  7030.           Format:   int memcpy(char dest[], char src[], int n) 
  7031.      Description:   Copies 'n' bytes of memory from the buffer 'src' to the
  7032.      buffer 'dest'.
  7033.  
  7034.                            Bingo 3.10 Reference Manual
  7035.                                        115
  7036.  
  7037.  
  7038.  
  7039.  
  7040.                                                                         Msg
  7041.      ----------------------------------------------------------------------
  7042.           Format:   int msg(char format[], ...) 
  7043.      Description:   Displays a formatted message on the status line.  This
  7044.      message will remain displayed until normal screen processing re-
  7045.      displays the status line, or until an 'update_display' command is
  7046.      issued.  Formatting follows the same conventions as the 'sformat'
  7047.      function.
  7048.  
  7049.                                                                   Pick_file
  7050.      ----------------------------------------------------------------------
  7051.           Format:   int pick_file(char fname[],char title[],int style,
  7052.                          int start) 
  7053.      Description:   Used as an alternative to the 'box_pick' function when
  7054.      the number of choices is large.  This function will work the same as
  7055.      'box_pick', except that the choices will be contained in the file
  7056.      whose name is in the character buffer 'fname'.  'Pick_file' returns
  7057.      the same values as 'box_pick' does.
  7058.  
  7059.                                                                    Put_char
  7060.      ----------------------------------------------------------------------
  7061.           Format:   int put_char(int val) 
  7062.      Description:   Interprets an integer value 'val' exactly as if it was
  7063.      typed in.  For example:
  7064.           put_char(17408);
  7065.      will cause Bingo to interpret the keystroke F10.  Likewise:
  7066.           put_char(65)
  7067.      will cause Bingo to interpret the keystroke 'A'.
  7068.  
  7069.                                                                    Put_text
  7070.      ----------------------------------------------------------------------
  7071.           Format:   int put_text(int insert,int line,int col,char text[]);
  7072.      Description:   This function allows the user to place a string of
  7073.      zero-terminated text, contained in the character buffer 'text', into
  7074.      the current file.  The text will be placed on line number 'line' at
  7075.      column 'col'.  If the 'insert' flag is True (nonzero), any text
  7076.      currently located there will be pushed to the right.  If the 'insert'
  7077.      flag is False (zero), any text located in that space will be
  7078.      overwritten.  For example:
  7079.           put_text(1,100,4,"Hi!")
  7080.      will cause the text string "Hi!" to be inserted on line 100 starting
  7081.      at column 4.
  7082.  
  7083.                                                               Put_text_curr
  7084.      ----------------------------------------------------------------------
  7085.           Format:   int put_text_curr(int insert,char text[]);
  7086.      Description:   Function similarly to 'put_text', however the text will
  7087.      be placed at the current cursor position in the current file.
  7088.  
  7089.  
  7090.  
  7091.  
  7092.                            Bingo 3.10 Reference Manual
  7093.                                        116
  7094.  
  7095.  
  7096.  
  7097.  
  7098.                                                                         Run
  7099.      ----------------------------------------------------------------------
  7100.           Format:   int run(char fname[]) 
  7101.      Description:   Allows the user to run another Chess program, contained
  7102.      in the file named in 'fname'.  This file will have access to global
  7103.      variables defined in the currently executing Chess program.
  7104.  
  7105.                                                                 Set_display
  7106.      ----------------------------------------------------------------------
  7107.           Format:   int set_display(int on) 
  7108.      Description:   Sets on (on nonzero) or off (on = zero) whether the
  7109.      display (screen) gets updated during subsequent Bingo/Chess commands. 
  7110.      Turning this off can significantly increase performance.  Remember,
  7111.      however, to issue an 'update_display()' call when you need the screen
  7112.      repainted, and to turn it back on again at some point.
  7113.  
  7114.                                                                Set_msg_wait
  7115.      ----------------------------------------------------------------------
  7116.           Format:   int set_msg_wait(int on) 
  7117.      Description:   Sets on (on nonzero) or off (on = zero) whether Bingo
  7118.      waits for a keystrokes after the messages where Bingo would normally
  7119.      do this.  For example, the 'replace' command normally pauses for 3
  7120.      seconds or a keystroke after it executes.  Turning this off can speed
  7121.      up such processing.
  7122.  
  7123.                                                                  Set_recall
  7124.      ----------------------------------------------------------------------
  7125.           Format:   int set_recall(int on) 
  7126.      Description:   Normally, Bingo saves two types of string entry
  7127.      histories, the standard string entry history and the filename history. 
  7128.      This function allows you to turn on or off this action for both,
  7129.      either, or neither of these histories.  For example:
  7130.  
  7131.           set_recall("");               : turns off both histories
  7132.           set_recall("file");           : turns on filename histories
  7133.           set_recall("string");         : turns on standard string history
  7134.           set_recall("string","file");  : turns on both 
  7135.  
  7136.  
  7137.  
  7138.  
  7139.  
  7140.  
  7141.  
  7142.  
  7143.  
  7144.  
  7145.  
  7146.  
  7147.  
  7148.  
  7149.  
  7150.                            Bingo 3.10 Reference Manual
  7151.                                        117
  7152.  
  7153.  
  7154.  
  7155.  
  7156.                                                                     Set_reg
  7157.      ----------------------------------------------------------------------
  7158.           Format:   int set_reg(char regname[],int val)
  7159.      Description:   Used to set the value of one of Bingo's working copies
  7160.      of the internal 80x86 registers.  The register names and their range
  7161.      of legal values are as follows:
  7162.  
  7163.           Name      Size                Name      Size
  7164.           ---------------------------------------------
  7165.           ax        16 bit              al        8 bit
  7166.           bx        16 bit              ah        8 bit
  7167.           cx        16 bit              bl        8 bit
  7168.           dx        16 bit              bh        8 bit
  7169.           si        16 bit              cl        8 bit
  7170.           di        16 bit              ch        8 bit
  7171.           cflag     16 bit              dl        8 bit
  7172.           flags     16 bit              dh        8 bit
  7173.  
  7174.                                                                    Sformat 
  7175.      ----------------------------------------------------------------------
  7176.           Format:   int sformat (char dest[],char str[],...) 
  7177.      Description:   Allows formatting of strings using the C language
  7178.      'printf' conventions.  Places the formatted string in 'dest'.  While
  7179.      the full complement of replacements are available, only three basic
  7180.      primitives will be described here.
  7181.           %ld       integer
  7182.           %s        string
  7183.           %c        character
  7184.      'Sformat' returns the length of the formatted string.  For example:
  7185.           int i,j;
  7186.           char dest[80];
  7187.           char temp[30];
  7188.           i=sformat(dest,"Hi %s.","Chris");
  7189.                --> 'dest' contains "Hi Chris."
  7190.                --> 'i' contains 9
  7191.  
  7192.           i=sformat(dest,"Hello %s %c.","Chris",'S');
  7193.                --> 'dest' contains "Hi Chris S."
  7194.                --> 'i' contains 11
  7195.  
  7196.           j=99;
  7197.           strcpy(temp,"Chris");
  7198.           i=sformat(dest,"%ld red balloons, %s!",j,temp);
  7199.                --> 'dest' contains "99 red balloons, Chris!"
  7200.                --> 'i' contains 21
  7201.      Note:  All of Borland TurboC's 'printf' primitives are supported, but
  7202.      you must remember a few things.  In particular, Chess integers are 4-
  7203.      bytes longs, not normal Turbo C integers.  Thus:
  7204.           i=300000;
  7205.           sformat(dest,"%d",i);
  7206.      will not work properly.
  7207.  
  7208.                            Bingo 3.10 Reference Manual
  7209.                                        118
  7210.  
  7211.  
  7212.  
  7213.  
  7214.                                                                         Str
  7215.      ----------------------------------------------------------------------
  7216.           Format:   int str(char s[]) 
  7217.      Description:   This is a specialized function very similar to 'key'. 
  7218.      It is used in conjunction with 'b_cmd' to pass strings of text to
  7219.      intrinsic Bingo commands.  For example:
  7220.           b_cmd("swap_execute",str("dir /p"),key("return"));
  7221.      would cause Bingo to swap to DOS and execute the command "dir/p".  The
  7222.      'key("return")' preloads the keystroke 'Return' as well.
  7223.  
  7224.                                                                      Strcat
  7225.      ----------------------------------------------------------------------
  7226.           Format:   int strcat(char dest[],char src[]) 
  7227.      Description:   Concatenates the contents of one zero-terminate string
  7228.      onto another:
  7229.           char temp1[20],temp2[20];
  7230.           strcpy(temp1,"Hi ");
  7231.           strcpy(temp2,"Chris!");
  7232.           strcat(temp1,temp2);
  7233.      would leave the string "Hi Chris!" in the character buffer 'temp1'
  7234.  
  7235.                                                                      Strcmp
  7236.      ----------------------------------------------------------------------
  7237.           Format:   int strcmp(char s1[],char s2[]) 
  7238.      Description:   Compares two strings (character buffers).  Returns 0 if
  7239.      the strings match, <0 if string 's1' is less than 's2', and >0 if 's1'
  7240.      is greater than 's2'.  For example:
  7241.  
  7242.           strcmp("Hello","Hi")     returns   <0
  7243.           strcmp("Hello","Alfie")  returns   >0
  7244.           strcmp("hello",Hello")   returns   0
  7245.  
  7246.                                                                      Strcpy
  7247.      ----------------------------------------------------------------------
  7248.           Format:   int strcpy(char dest[],char src[]) 
  7249.      Description:   Copies the contents of 'src', a zero-terminated string,
  7250.      into the character buffer 'dest', including the 0.  Always returns 1.
  7251.  
  7252.                                                                      Strlen
  7253.      ----------------------------------------------------------------------
  7254.           Format:   int strlen(char src[]) 
  7255.      Description:   Returns the length of the zero-terminated string in
  7256.      'src'.  For example:
  7257.           char tempo[80];
  7258.           strcpy(tempo,"Hi!")
  7259.           i=strlen(tempo);
  7260.      would leave 'i' with the value of 3.
  7261.  
  7262.  
  7263.  
  7264.  
  7265.  
  7266.                            Bingo 3.10 Reference Manual
  7267.                                        119
  7268.  
  7269.  
  7270.  
  7271.  
  7272.                                                                      Strndx
  7273.      ----------------------------------------------------------------------
  7274.           Format:   int strndx(char src[],char c) 
  7275.      Description:   Returns the integer offset of the *first* occurrence of
  7276.      'c' in the zero-terminated string 'src'.  Return -1 if 'c' is not
  7277.      found.  Position zero (0) is the first character.  For example:
  7278.           strndx("Hello",'o')      returns   4
  7279.           strndx("Hello",'l')      returns   2
  7280.           strndx("Hello",'p')      returns   -1
  7281.  
  7282.                                                              Update_display
  7283.      ----------------------------------------------------------------------
  7284.           Format:   int update_display(void) 
  7285.      Description:   Refreshes the current window and the command line. 
  7286.      Always returns 1.
  7287.  
  7288.                                                                  Valid_name
  7289.      ----------------------------------------------------------------------
  7290.           Format:   int valid_name(char s[]) 
  7291.      Description:   Attempts to validate the file name in the character
  7292.      buffer 's'.  Will interpret the ":temp:" and ":home:" identifiers
  7293.      automatically.  Will convert forward slashes to back slashes.  Will
  7294.      attempt to expand 's' to a full directory specification.  Always
  7295.      returns 1.
  7296.           's' MUST have enough room for the expanded file name; on MS-DOS
  7297.      file systems, this equates to roughly 80 characters.
  7298.  
  7299.  
  7300.  
  7301.  
  7302.  
  7303.  
  7304.  
  7305.  
  7306.  
  7307.  
  7308.  
  7309.  
  7310.  
  7311.  
  7312.  
  7313.  
  7314.  
  7315.  
  7316.  
  7317.  
  7318.  
  7319.  
  7320.  
  7321.  
  7322.  
  7323.  
  7324.                            Bingo 3.10 Reference Manual
  7325.                                        120
  7326.  
  7327.  
  7328.  
  7329.  
  7330.      "Ask" Arguments
  7331.      ---------------
  7332.  
  7333.           Chess's 'ask' library function is the means through which a
  7334.      program can retrieve information about Bingo's current settings and
  7335.      status.  This section will list each of the 'ask' arguments
  7336.      recognized, and what they return.  Most 'ask' arguments return an
  7337.      integer, and are used like this:
  7338.           i=ask("file_autoindent");
  7339.      True/False arguments such as 'file_autoindent' return 1 for True, 0
  7340.      for False.
  7341.           Other types of 'ask' arguments fetch character buffer data, such
  7342.      as:
  7343.           char dest[80];
  7344.           ask("file_name",dest);
  7345.      would place the current filename in the character buffer 'dest'.
  7346.  
  7347.                                                             File_autoindent
  7348.      ----------------------------------------------------------------------
  7349.      Calling Sequence: ask("file_autoindent")
  7350.           Description: Auto indent setting for current file.
  7351.               Returns: Integer, 1 if set to True, 0 for False.
  7352.  
  7353.                                                                 File_bspace
  7354.      ----------------------------------------------------------------------
  7355.      Calling Sequence: ask("file_bspace")
  7356.           Description: Backspace mode setting for current file.
  7357.               Returns: Integer 0-3, meaning:
  7358.                     0    -->  No Tab Delete
  7359.                     1    -->  One Tab Delete
  7360.                     2    -->  Delete All
  7361.                     3    -->  Rubout
  7362.  
  7363.                                                                File_changes
  7364.      ----------------------------------------------------------------------
  7365.      Calling Sequence: ask("file_changes")
  7366.           Description: Changes to current file since last backup.
  7367.               Returns: Integer number equal to the number of "change"
  7368.      events which have hit the current file.  This is the same number of
  7369.      changes which the timed backups are triggered from.
  7370.  
  7371.                                                                  File_cmode
  7372.      ----------------------------------------------------------------------
  7373.      Calling Sequence: ask("file_cmode")
  7374.           Description: C-Mode setting for the current file.
  7375.               Returns: Integer describing which type of C-Mode indention is
  7376.      active for the current file. Types are:
  7377.           0    None
  7378.           1    ANSI
  7379.           2    Classical
  7380.  
  7381.  
  7382.                            Bingo 3.10 Reference Manual
  7383.                                        121
  7384.  
  7385.  
  7386.  
  7387.  
  7388.                                                                 File_column
  7389.      ----------------------------------------------------------------------
  7390.      Calling Sequence: ask("file_column")
  7391.           Description: Column position in current file.
  7392.               Returns: Integer denoting the column position of the current
  7393.      file. 1 is the first column, etc.
  7394.  
  7395.                                                               File_dialogue
  7396.      ---------------------------------------------------------------------
  7397.               Returns: Integer denoting the line the cursor is on in the
  7398.      current file.  The first line is 1.
  7399.  
  7400.                                                               File_matching
  7401.      ----------------------------------------------------------------------
  7402.      Calling Sequence: ask("file_matching")
  7403.           Description: Matching mode for the current file.
  7404.               Returns: Integer True (1) or False (0) depending when the
  7405.      current files Matching mode setting.
  7406.  
  7407.                                                                   File_name
  7408.      ----------------------------------------------------------------------
  7409.      Calling Sequence: ask("file_name",char dest[])
  7410.           Description: File name, with extension, of the current file.
  7411.               Returns: Into the character buffer 'dest', retrieves the file
  7412.      name, without the path, of the current file.  For example, editing the
  7413.      file "c:\edit\temp.c":
  7414.           char temp[80];
  7415.           ask("file_name",temp);
  7416.                --> 'temp' now contains "temp.c"
  7417.      Note: There must be sufficient space in 'dest' for the file name.
  7418.  
  7419.                                                                    File_new
  7420.      ----------------------------------------------------------------------
  7421.      Calling Sequence: ask("file_new")
  7422.           Description: Was the current file new when loaded?
  7423.               Returns: True (1) or False (0) depending on if the current
  7424.      file was created when it was loaded.
  7425.  
  7426.                                                                 File_number
  7427.      ----------------------------------------------------------------------
  7428.      Calling Sequence: ask("file_number")
  7429.           Description: Number of the current file in the ring.
  7430.               Returns: Integer, ranging from 0 to (number of files - 1),
  7431.      denoting the number of the current file in the ring.  The first file
  7432.      is 0, the second is 1, etc.  This is not to be confused with the
  7433.      "file_id_no", which is unique for each file edited in the session.
  7434.  
  7435.  
  7436.  
  7437.  
  7438.  
  7439.  
  7440.                            Bingo 3.10 Reference Manual
  7441.                                        122
  7442.  
  7443.  
  7444.  
  7445.  
  7446.                                                                   File_path
  7447.      ----------------------------------------------------------------------
  7448.      Calling Sequence: ask("file_path",char dest[])
  7449.           Description: Path name of the current file, ending with
  7450.      backslash.
  7451.               Returns: Into a character buffer 'dest', the full path
  7452.      including the drive, of the current file.  For example, editing the
  7453.      file "c:\edit\temp.c":
  7454.           char temp[80];
  7455.           ask("file_path",temp);
  7456.                --> 'temp' contains "c:\edit\"
  7457.      Note: "file_path" will always end with a backslash, so that the
  7458.      "file_name" can be concatenated onto the end of the path.  'dest' must
  7459.      have enough room for the "file_path".
  7460.  
  7461.                                                                File_recmode
  7462.      ----------------------------------------------------------------------
  7463.      Calling Sequence: ask("file_recmode")
  7464.           Description: Current text recognition mode setting for the
  7465.      current buffer.
  7466.               Returns: Integer corresponding to the setting of the text
  7467.      recognition mode (0=On-Demand (Sleeping), 1=Automatic, 2=On-Demand
  7468.      (waiting for a match)). 
  7469.  
  7470.                                                                  File_recog
  7471.      ----------------------------------------------------------------------
  7472.      Calling Sequence: ask("file_recog",int n,char trigger[],char chess[])
  7473.           Description: Text recognition relationship 'n' for the current
  7474.      buffer.  The first relationship has n=0.
  7475.               Returns: Into 'trigger', the character string which is the
  7476.      trigger Integer corresponding to the setting of the text recognition
  7477.      mode (0=On-Demand (Sleeping), 1=Automatic, 2=On-Demand (waiting for a
  7478.      match)). 
  7479.  
  7480.  
  7481.                                                                File_rmargin
  7482.      ----------------------------------------------------------------------
  7483.      Calling Sequence: ask("file_rmargin")
  7484.           Description: Right margin setting for current file.
  7485.               Returns: Integer which is the setting of the right margin for
  7486.      the current file.
  7487.  
  7488.                                                             File_smart_tabs
  7489.      ----------------------------------------------------------------------
  7490.      Calling Sequence: ask("file_smart_tabs")
  7491.           Description: Smart tab setting for current file.
  7492.               Returns: Integer True (1) or False (0) denoting the setting
  7493.      of the SmartTabs option for the current file.
  7494.  
  7495.  
  7496.  
  7497.  
  7498.                            Bingo 3.10 Reference Manual
  7499.                                        123
  7500.  
  7501.  
  7502.  
  7503.  
  7504.                                                                File_tabsize
  7505.      ----------------------------------------------------------------------
  7506.      Calling Sequence: ask("file_tabsize")
  7507.           Description: Tab size for the current file.
  7508.               Returns: Integer value of the current file's tab size
  7509.      setting.
  7510.  
  7511.                                                                  File_timed
  7512.      ----------------------------------------------------------------------
  7513.      Calling Sequence: ask("file_timed")
  7514.           Description: Timed backup setting for the current file.
  7515.               Returns: Integer setting of the timed backup option for the
  7516.      current file.
  7517.  
  7518.                                                               File_w_height
  7519.      ----------------------------------------------------------------------
  7520.      Calling Sequence: ask("file_w_height")
  7521.           Description: Current window height.
  7522.               Returns: Integer height, in rows, of the current window. 
  7523.      This does not include the status line.
  7524.  
  7525.                                                                 File_w_left
  7526.      ----------------------------------------------------------------------
  7527.      Calling Sequence: ask("file_w_left")
  7528.           Description: Current window left location.
  7529.               Returns: Integer column upon which the current windows left
  7530.      side starts.
  7531.  
  7532.                                                                  File_w_top
  7533.      ----------------------------------------------------------------------
  7534.      Calling Sequence: ask("file_w_top")
  7535.           Description: Current window one pos.
  7536.               Returns: Integer value of the row upon which the current
  7537.      windows top row sits.
  7538.  
  7539.                                                                File_w_width
  7540.      ----------------------------------------------------------------------
  7541.      Calling Sequence: ask("file_w_width")
  7542.           Description: Width of current window.
  7543.               Returns: Integer width, in columns, of the current window.
  7544.  
  7545.                                                               File_wordwrap
  7546.      ----------------------------------------------------------------------
  7547.      Calling Sequence: ask("file_wordwrap")
  7548.           Description: Word wrap setting of current file.
  7549.               Returns: Integer True (1) or False (0) setting of the current
  7550.      files Word wrap option.
  7551.  
  7552.  
  7553.  
  7554.  
  7555.  
  7556.                            Bingo 3.10 Reference Manual
  7557.                                        124
  7558.  
  7559.  
  7560.  
  7561.  
  7562.                                                                      File_x
  7563.      ----------------------------------------------------------------------
  7564.      Calling Sequence: ask("file_x")
  7565.           Description: X location of cursor within the current window.
  7566.               Returns: Integer X, or column, location of the cursor within
  7567.      the window, using the window top as row 1, and the window left as
  7568.      column 1.
  7569.  
  7570.                                                                      File_y
  7571.      ----------------------------------------------------------------------
  7572.      Calling Sequence: ask("file_y")
  7573.           Description: Y location of cursor on the current window.
  7574.               Returns: Integer Y, or row, location of the cursor within the
  7575.      window, using the window top as row 1, and the window left as column
  7576.      1.
  7577.  
  7578.                                                              Sys_autoindent
  7579.      ----------------------------------------------------------------------
  7580.      Calling Sequence: ask("sys_autoindent")
  7581.           Description: System auto indent setting.
  7582.               Returns: Integer default auto indent setting, True (1) or
  7583.      False (0).
  7584.  
  7585.                                                               Sys_autostrip
  7586.      ----------------------------------------------------------------------
  7587.      Calling Sequence: ask("sys_autostrip")
  7588.           Description: System autostrip setting.
  7589.               Returns: Integer default high bit stripping setting, True (1)
  7590.      or False (0).
  7591.  
  7592.                                                               Sys_autotrail
  7593.      ----------------------------------------------------------------------
  7594.      Calling Sequence: ask("sys_autotrail")
  7595.           Description: System autotrail setting.
  7596.               Returns: Integer default auto trailing space setting, True
  7597.      (1) or False (0).
  7598.  
  7599.                                                                 Sys_backups
  7600.      ----------------------------------------------------------------------
  7601.      Calling Sequence: ask("sys_backups",char dest[])
  7602.           Description: System backup extension.
  7603.               Returns:
  7604.  
  7605.                                                                  Sys_bounce
  7606.      ----------------------------------------------------------------------
  7607.      Calling Sequence: ask("sys_bounce")
  7608.           Description: System cursor bounce setting.
  7609.               Returns: Integer default bounce cursor setting, True (1) or
  7610.      False (0).
  7611.  
  7612.  
  7613.  
  7614.                            Bingo 3.10 Reference Manual
  7615.                                        125
  7616.  
  7617.  
  7618.  
  7619.  
  7620.                                                                  Sys_bspace
  7621.      ----------------------------------------------------------------------
  7622.      Calling Sequence: ask("sys_bspace")
  7623.           Description: System backspace setting.
  7624.               Returns: Integer default backspace setting.  See the entry
  7625.      for "file_bspace" for a listing of valid return codes.
  7626.  
  7627.                                                                Sys_carriage
  7628.      ----------------------------------------------------------------------
  7629.      Calling Sequence: ask("sys_carriage")
  7630.           Description: Carriage return setting.
  7631.               Returns: Integer default carriage-return-splits-line setting,
  7632.      True (1) or False (0).
  7633.  
  7634.                                                                   Sys_cmode
  7635.      ----------------------------------------------------------------------
  7636.      Calling Sequence: ask("sys_cmode")
  7637.           Description: System C-Mode setting.
  7638.               Returns: Integer default C-Mode setting; see the entry for
  7639.      file_cmode for an explanation of return codes.
  7640.  
  7641.                                                                    Sys_cols
  7642.      ----------------------------------------------------------------------
  7643.      Calling Sequence: ask("sys_cols")
  7644.           Description: System number columns.
  7645.               Returns: Integer number of columns on the screen.
  7646.  
  7647.                                                                  Sys_delete
  7648.      ----------------------------------------------------------------------
  7649.      Calling Sequence: ask("sys_delete")
  7650.           Description: Delete joins lines setting.
  7651.               Returns: Integer default setting for the delete-join option,
  7652.      True (1) or False (0).
  7653.  
  7654.                                                              Sys_extensions
  7655.      ----------------------------------------------------------------------
  7656.      Calling Sequence: ask("sys_extensions", int which, char dest[])
  7657.           Description: Default file extensions.
  7658.               Returns: The [which] currently defined file extension.  For
  7659.      example:
  7660.           char temp[80];
  7661.           ask("sys_extensions",3,temp);
  7662.      will retrieve the 3rd defined file extension into the character buffer
  7663.      'dest'.  If the extension is not defined, 'dest' will be filled in
  7664.      with the empty string "".
  7665.  
  7666.  
  7667.  
  7668.  
  7669.  
  7670.  
  7671.  
  7672.                            Bingo 3.10 Reference Manual
  7673.                                        126
  7674.  
  7675.  
  7676.  
  7677.  
  7678.                                                                  Sys_fcount
  7679.      ----------------------------------------------------------------------
  7680.      Calling Sequence: ask("sys_fcount")
  7681.           Description: Count of files - 1 in the ring.
  7682.               Returns: Integer number of files currently in the ring, less
  7683.      one.
  7684.  
  7685.                                                                 Sys_inmacro
  7686.      ----------------------------------------------------------------------
  7687.      Calling Sequence: ask("sys_inmacro")
  7688.           Description: Is Bingo currently replaying a macro?
  7689.               Returns: Integer default sys_inmacro setting, True (1) or
  7690.      False (0).
  7691.  
  7692.                                                                 Sys_insmode
  7693.      ----------------------------------------------------------------------
  7694.      Calling Sequence: ask("sys_insmode")
  7695.           Description: Default insert mode.
  7696.               Returns: Integer default Insert mode setting, True (1) or
  7697.      False (0).
  7698.  
  7699.                                                              Sys_mark_paste
  7700.      ----------------------------------------------------------------------
  7701.      Calling Sequence: ask("sys_mark_paste")
  7702.           Description: System mark-pasting block setting.
  7703.               Returns: Integer mark-pasting setting, True (1) or False (0).
  7704.  
  7705.                                                                Sys_matching
  7706.      ----------------------------------------------------------------------
  7707.      Calling Sequence: ask("sys_matching")
  7708.           Description: System matching mode setting.
  7709.               Returns: Integer default Matching mode setting, True (1) or
  7710.      False (0).
  7711.  
  7712.                                                                   Sys_mouse
  7713.      ----------------------------------------------------------------------
  7714.      Calling Sequence: ask("sys_mouse")
  7715.           Description: Is a mouse available?
  7716.               Returns: Integer True (1) or False (0), denoting whether the
  7717.      mouse is available.
  7718.  
  7719.                                                                    Sys_para
  7720.      ----------------------------------------------------------------------
  7721.      Calling Sequence: ask("sys_para")
  7722.           Description: Indention starts new paragraph.
  7723.  
  7724.  
  7725.  
  7726.  
  7727.  
  7728.  
  7729.  
  7730.                            Bingo 3.10 Reference Manual
  7731.                                        127
  7732.  
  7733.  
  7734.  
  7735.  
  7736.                                                                   Sys_rdefs
  7737.      ----------------------------------------------------------------------
  7738.      Calling Sequence: ask("sys_rdefs",char dest[])
  7739.           Description: Replace default string.
  7740.               Returns: Places in the 'dest' character buffer the current
  7741.      Replace default string.
  7742.  
  7743.                                                                 Sys_recmode
  7744.      ----------------------------------------------------------------------
  7745.      Calling Sequence: ask("sys_recmode")
  7746.           Description: Systemwide default text recognition mode setting.
  7747.               Returns: Integer corresponding to the setting of the text
  7748.      recognition mode (0=On-Demand (Sleeping), 1=Automatic, 2=On-Demand
  7749.      (waiting for a match)). 
  7750.  
  7751.                                                               Sys_recording
  7752.      ----------------------------------------------------------------------
  7753.      Calling Sequence: ask("sys_recording")
  7754.           Description: Is Bingo currently recording a macro?
  7755.               Returns: True (1) or False (0), depending on whether Bingo is
  7756.      currently recording a macro.
  7757.  
  7758.                                                                 Sys_rmargin
  7759.      ----------------------------------------------------------------------
  7760.      Calling Sequence: ask("sys_rmargin")
  7761.           Description: System right margin setting.
  7762.               Returns: Integer value of the current default right margin
  7763.      setting.
  7764.  
  7765.                                                                    Sys_rows
  7766.      ----------------------------------------------------------------------
  7767.      Calling Sequence: ask("sys_rows")
  7768.           Description: Number of rows on screen.
  7769.               Returns: Integer number of rows displayed on the screen.
  7770.  
  7771.                                                                   Sys_sdefs
  7772.      ----------------------------------------------------------------------
  7773.      Calling Sequence: ask("sys_sdefs",char dest[])
  7774.           Description: Search defaults.
  7775.               Returns: Places in the 'dest' character buffer the current
  7776.      Search default string.
  7777.  
  7778.                                                              Sys_smart_tabs
  7779.      ----------------------------------------------------------------------
  7780.      Calling Sequence: ask("sys_smart_tabs")
  7781.           Description: System smart tab setting.
  7782.               Returns: Integer default SmartTab setting, True (1) or False
  7783.      (0).
  7784.  
  7785.  
  7786.  
  7787.  
  7788.                            Bingo 3.10 Reference Manual
  7789.                                        128
  7790.  
  7791.  
  7792.  
  7793.  
  7794.                                                                 Sys_tabsize
  7795.      ----------------------------------------------------------------------
  7796.      Calling Sequence: ask("sys_tabsize")
  7797.           Description: System tab size.
  7798.               Returns: Integer default Tab Size setting.
  7799.  
  7800.                                                                   Sys_timed
  7801.      ----------------------------------------------------------------------
  7802.      Calling Sequence: ask("sys_timed")
  7803.           Description: System timed backup setting.
  7804.               Returns: Integer denoting the number of "changes" which can
  7805.      elapse between autosaves.  Zero (0) means no saves will be done.
  7806.  
  7807.                                                               Sys_undo_many
  7808.      ----------------------------------------------------------------------
  7809.      Calling Sequence: ask("sys_undo_many")
  7810.           Description: System undo setting.
  7811.               Returns: Integer denoting the maximum number of undo events
  7812.      Bingo is saving.  Zero (0) means no undo events are being saved.
  7813.  
  7814.                                                              Sys_word_delim
  7815.      ----------------------------------------------------------------------
  7816.      Calling Sequence: ask("sys_word_delim",char dest[])
  7817.           Description: System defined word delimiters.
  7818.               Returns: Copies into the character buffer 'dest' the string
  7819.      of characters which are *not* in a word.
  7820.  
  7821.                                                                Sys_wordwrap
  7822.      ----------------------------------------------------------------------
  7823.      Calling Sequence: ask("sys_wordwrap")
  7824.           Description: System word wrap setting.
  7825.               Returns: Integer default word wrap setting, True (1) or False
  7826.      (0).
  7827.  
  7828.                                                                    Sys_zoom
  7829.      ----------------------------------------------------------------------
  7830.      Calling Sequence: ask("sys_zoom")
  7831.           Description: Is the current window zoomed?.
  7832.               Returns: Integer default zoom window setting, True (1) or
  7833.      False (0).
  7834.  
  7835.                                                                     Version
  7836.      ----------------------------------------------------------------------
  7837.      Calling Sequence: ask("version", char dest[])
  7838.           Description: Current Bingo version.
  7839.               Returns: Copies into the character buffer 'dest' a zero
  7840.      terminated string containing the current Bingo versions.  This string
  7841.      will be at most 20 characters, including the zero.
  7842.  
  7843.  
  7844.  
  7845.  
  7846.                            Bingo 3.10 Reference Manual
  7847.                                        129
  7848.  
  7849.  
  7850.  
  7851.  
  7852.                                                                     Ws_size
  7853.      ----------------------------------------------------------------------
  7854.      Calling Sequence: ask("ws_size")
  7855.           Description: Interpreter workspace size.
  7856.               Returns: Integer size of the currently executing Chess
  7857.      subprogram size, in characters.
  7858.  
  7859.  
  7860.  
  7861.  
  7862.  
  7863.  
  7864.  
  7865.  
  7866.  
  7867.  
  7868.  
  7869.  
  7870.  
  7871.  
  7872.  
  7873.  
  7874.  
  7875.  
  7876.  
  7877.  
  7878.  
  7879.  
  7880.  
  7881.  
  7882.  
  7883.  
  7884.  
  7885.  
  7886.  
  7887.  
  7888.  
  7889.  
  7890.  
  7891.  
  7892.  
  7893.  
  7894.  
  7895.  
  7896.  
  7897.  
  7898.  
  7899.  
  7900.  
  7901.  
  7902.  
  7903.  
  7904.                            Bingo 3.10 Reference Manual
  7905.                                        130
  7906.  
  7907.  
  7908.  
  7909.  
  7910.      Chess Execution Errors
  7911.      ----------------------
  7912.                                                                       Abort
  7913.      ----------------------------------------------------------------------
  7914.      This error will be generated when the execution of a Chess program is
  7915.      interrupted by the user by pressing and holding the Scroll Lock key.
  7916.  
  7917.                                                                   Arguments
  7918.      ----------------------------------------------------------------------
  7919.      This error will be generated when the number of arguments used to call
  7920.      a function does not equal the number of arguments declared for the
  7921.      function.
  7922.  
  7923.                                                             Bingo Intrinsic
  7924.      ----------------------------------------------------------------------
  7925.      This error is generated by a call to the 'b_cmd' library function when
  7926.      the first argument passed to it does not equal a valid Bingo intrinsic
  7927.      function.
  7928.  
  7929.                                                                       Class
  7930.      ----------------------------------------------------------------------
  7931.      This error will be generated when a variable which is not an array is
  7932.      referenced with an array subscript.
  7933.  
  7934.                                                                 Declaration
  7935.      ----------------------------------------------------------------------
  7936.      This error is generated when a Chess program attempts to reference a
  7937.      variable which has not been declared.
  7938.  
  7939.                                                                 Exec Interp
  7940.      ----------------------------------------------------------------------
  7941.      This error will be generated when Bingo lacks memory to execute the
  7942.      command line given in the 'Chess_exec' function.
  7943.  
  7944.                                                     Function Table Overflow
  7945.      ----------------------------------------------------------------------
  7946.      This will be generated when the number of declared functions exceeds
  7947.      the size of the function table set using the BOPTS utility program.
  7948.  
  7949.                                                         Interpreter Parsing
  7950.      ----------------------------------------------------------------------
  7951.      This is an error generated when the Chess interpreter has encountered
  7952.      illegal syntax.
  7953.  
  7954.                                                                  Left Brace
  7955.      ----------------------------------------------------------------------
  7956.      This error is generated when a left brace ('{') is not found when
  7957.      Chess expects to find one.
  7958.  
  7959.  
  7960.  
  7961.  
  7962.                            Bingo 3.10 Reference Manual
  7963.                                        131
  7964.  
  7965.  
  7966.  
  7967.  
  7968.                                                                  Left-Value
  7969.      ----------------------------------------------------------------------
  7970.      This error is generated when Chess finds that the value on the left
  7971.      side of an assignment statement is illegal, such as a constant or a
  7972.      function.
  7973.  
  7974.                                                                        Link
  7975.      ----------------------------------------------------------------------
  7976.      This error is generated when Chess is unable to resolve all of the
  7977.      function and variable references in a program. 
  7978.  
  7979.                                                                       Range
  7980.      ----------------------------------------------------------------------
  7981.      This error is generated when you attempt to reference an array element
  7982.      outside the declared range.
  7983.  
  7984.                                                                 Right Paren
  7985.      ----------------------------------------------------------------------
  7986.      This error is generated if Chess fails to find matching right
  7987.      parentheses or right braces.
  7988.  
  7989.                                                                 Stack (Pop)
  7990.      ----------------------------------------------------------------------
  7991.      This is an internal error indicating a stack error; report these to
  7992.      the error as soon as possible, along with a copy of the code that
  7993.      caused it.
  7994.  
  7995.                                                                Stack (Push)
  7996.      ----------------------------------------------------------------------
  7997.      This is an internal error indicating a stack error; report these to
  7998.      the error as soon as possible, along with a copy of the code that
  7999.      caused it.
  8000.  
  8001.                                                                      Symbol
  8002.      ----------------------------------------------------------------------
  8003.      This error is generated when Chess cannot find a symbol used as either
  8004.      a variable or function.
  8005.  
  8006.                                                                      Syntax
  8007.      ----------------------------------------------------------------------
  8008.      This error is generated when basic Chess syntax rules are broken.
  8009.  
  8010.                                                                 System Call
  8011.      ----------------------------------------------------------------------
  8012.      This error is generated when a call to one of Chess's library
  8013.      functions is called without the proper number of arguments.
  8014.  
  8015.  
  8016.  
  8017.  
  8018.  
  8019.  
  8020.                            Bingo 3.10 Reference Manual
  8021.                                        132
  8022.  
  8023.  
  8024.  
  8025.  
  8026.                                                             System Variable
  8027.      ----------------------------------------------------------------------
  8028.      This error is generated when a call to the 'ask' library function uses
  8029.      the incorrect number of arguments, or if the 'ask' argument is
  8030.      unrecognized.
  8031.  
  8032.                                                     Variable Table Overflow
  8033.      ----------------------------------------------------------------------
  8034.      This will be generated when the number of declared variables exceeds
  8035.      the size of the variable table set using the BOPTS utility program.
  8036.  
  8037.  
  8038.  
  8039.  
  8040.  
  8041.  
  8042.  
  8043.  
  8044.  
  8045.  
  8046.  
  8047.  
  8048.  
  8049.  
  8050.  
  8051.  
  8052.  
  8053.  
  8054.  
  8055.  
  8056.  
  8057.  
  8058.  
  8059.  
  8060.  
  8061.  
  8062.  
  8063.  
  8064.  
  8065.  
  8066.  
  8067.  
  8068.  
  8069.  
  8070.  
  8071.  
  8072.  
  8073.  
  8074.  
  8075.  
  8076.  
  8077.  
  8078.                            Bingo 3.10 Reference Manual
  8079.                                        133
  8080.  
  8081.  
  8082.  
  8083.  
  8084.                              Some Example Chess Code
  8085.                              -----------------------
  8086.  
  8087.      This section will have some example Chess code which you may find
  8088.      useful.
  8089.  
  8090.      Example #1: Execute the Current File
  8091.      ------------------------------------
  8092.           This function is also seen elsewhere, but it is so useful it
  8093.      warrants inclusion again.  It first saves the current file if need be,
  8094.      then builds its full filespec and executes it as Chess program file.
  8095.  
  8096.      run_current{
  8097.           char temp[80],name[20];       /* declare working variables
  8098.           int i;
  8099.           b_cmd("modify_save");         /* save current file if dirty
  8100.           i=ask("file_path",temp)       /* get the file's path
  8101.           ask("file_name",name)         /* get the file's name
  8102.           strcpy(temp+i,name);          /* add the name to the path
  8103.           return(run(temp));            /* run the file and return
  8104.      }
  8105.  
  8106.      Example #2: Factorials
  8107.      ----------------------
  8108.           This pair of functions finds the factorials of numbers. 
  8109.      'find_fact' asks the user for a number and calls 'do_fact' to actually
  8110.      figure it out.  'do_fact' uses the classical recursive method to
  8111.      calculate the factorial of an integer.
  8112.  
  8113.      find_fact{
  8114.           char temp[30];
  8115.           int i;
  8116.           if((get_str(temp,"Find factorial of What number?",2)%256)!=27){
  8117.                /* if the user didn't press escape 
  8118.                i=atoi(temp);       /* convert to an integer
  8119.                i=do_fact(i);       /* find its factorial
  8120.                msg("%s factorial is %ld",temp,i); /* print it out
  8121.                getkey();           /* wait for a keypress
  8122.           }
  8123.      }
  8124.      do_fact        /* this function is a recursive one
  8125.      int n;              /* single parameter
  8126.      {
  8127.           if(n<1)        /* if illegal, return 0
  8128.                return(0);
  8129.           else if(n==1)  /* if we are done with recursive call
  8130.                return(1);
  8131.           else           /* else, recurse another level
  8132.                return(do_fact(n-1)*n);
  8133.      }
  8134.  
  8135.  
  8136.                            Bingo 3.10 Reference Manual
  8137.                                        134
  8138.  
  8139.  
  8140.  
  8141.  
  8142.                             The Included Chess Files
  8143.                             ------------------------
  8144.  
  8145.           Version 3.10 includes 15 sample CHESS program files/functions. 
  8146.      Each of these files are meant to be both useful and to illustrate
  8147.      important Chess programming concepts.  The sample files are
  8148.  
  8149.           BIOS_INT.CHS   : This sample file includes two routine to access
  8150.           the BIOS keyboard interrupt.  One routine can return keypress
  8151.           information, the other will wait for a keypress and then return,
  8152.           without processing the keypress.  
  8153.  
  8154.           CINDENT1.CHS   : This sample file will change all occurrences of
  8155.           C mode indention #2 to C mode indention #1.  I.e.,
  8156.                if             -- becomes -->      if{
  8157.                {                                       stuff...
  8158.                     stuff...                      }
  8159.                }
  8160.           This sample file is a very good example of using Bingo commands
  8161.           with complex arguments to perform operations.  Useful in
  8162.           conjunction with the 'global' command to change whole sets of
  8163.           files to a uniform C mode indention.
  8164.  
  8165.           CINDENT2.CHS   : This sample file will change all occurrences of
  8166.           C mode indention #1 to C mode indention #2.  I.e.,
  8167.                if{            -- becomes -->      if
  8168.                     stuff...                      {
  8169.                }                                       stuff...
  8170.                                                   }
  8171.           This sample file is a very good example of using Bingo commands
  8172.           with complex arguments to perform operations.  Useful in
  8173.           conjunction with the 'global' command to change whole sets of
  8174.           files to a uniform C mode indention.
  8175.  
  8176.           COMMENT.CHS    : Block comments a set of lines using '/*' in
  8177.           front of each linemarked lines.  A parameter 'aft' is used to
  8178.           decide whether or not an accompanying '*/' is placed after each
  8179.           line.
  8180.  
  8181.           COMPILE.CHS    : VERY useful program files.  Designed to be run
  8182.           as a standalone CHESS program file (run("compile.chs") from the
  8183.           'exec_chess' function).  The main code pops up a menu of choices
  8184.           using the 'box_pick function.  Then, two functions
  8185.           "compile_review" and "parse_errs" are used to run the command
  8186.           line and parse the errors.  This program file illustrates many
  8187.           key CHESS programming ideas.
  8188.  
  8189.           ERRORP.CHS     : This is a cousin of COMPILE.CHS; the difference
  8190.           is that ERRORP.CHS is designed to be used to parse errors from
  8191.           the command-line. 
  8192.  
  8193.  
  8194.                            Bingo 3.10 Reference Manual
  8195.                                        135
  8196.  
  8197.  
  8198.  
  8199.  
  8200.           FACT.CHS       : This is a simple recursion example, finding the
  8201.           factorial of a number.
  8202.  
  8203.           HEXKEY.CHS     : This routine displays the hexadecimal and
  8204.           decimal value of a keystroke.
  8205.  
  8206.           HOME&END.CHS   : This is a pair of functions which were inspired
  8207.           by the gang on the IBMAPP forum of Compuserve.  They are
  8208.           alternative begin and end of line functions, which depending on
  8209.           the current cursor position, may move further up or down the
  8210.           file.  A good example of how to replace standard Bingo functions
  8211.           with enhanced functions.
  8212.  
  8213.           LEAP.CHS       : Since the 'leap_' functions were dropped from
  8214.           version 3.10 of Bingo, this file contains replacement functions
  8215.           in Chess.
  8216.  
  8217.           QUIT.CHS       : This is an alternative 'quit' function, in which
  8218.           the default reply to quitting a modified file is not to save it -
  8219.           - the reverse of the standard function.
  8220.  
  8221.           S_AGAIN.CHS    : This contains functions which search for the
  8222.           last target again, only one function forces the search to be in
  8223.           the forward direction, the other in the reverse.
  8224.  
  8225.           SIDEBY.CHS     : These two functions allow for side by side
  8226.           scrolling of two vertical windows.
  8227.  
  8228.           STRIP.CHS      : This is a simple program file to strip comments
  8229.           from a CHESS program file; since they are unnecessary to run it
  8230.           and take up space.
  8231.  
  8232.           VARTABS.CHS    : This is a collection of functions designed to
  8233.           let you set tabs on a ruler line at arbitrary positions and then
  8234.           have Bingo use a replacement tab function to perform tabbing. 
  8235.           This would have to be incorporated into you .CFG file for it to
  8236.           work most effectively.
  8237.  
  8238.  
  8239.  
  8240.  
  8241.  
  8242.  
  8243.  
  8244.  
  8245.  
  8246.  
  8247.  
  8248.  
  8249.  
  8250.  
  8251.  
  8252.                            Bingo 3.10 Reference Manual
  8253.                                        136
  8254.  
  8255.  
  8256.  
  8257.  
  8258.                                    The Author
  8259.                                    ----------
  8260.  
  8261.           I received my M.S. in Computer Science from The Ohio State
  8262.      University in March of 1990, and am now employed by a large
  8263.      engineering/manufacturing firm in the Baltimore area.  I was raised in
  8264.      a steel town in Eastern Pennsylvania, and attended The Pennsylvania
  8265.      State University as an undergraduate, graduating in May of 1988. I
  8266.      hold a first-degree Black Belt in Tae Kwon Do, and I am an avid reader
  8267.      of science-fiction, fantasy, military fiction, mythology, and just
  8268.      about any other occurance of the printed word.  Bingo was developed on
  8269.      an original IBM PC (8088!) through version 2.10d, and since on a
  8270.      Gateway 2000 386DX/25.  Since April '92, Bingo has been developed
  8271.      while running under IBM's awesome OS/2 2.0 operating system.
  8272.  
  8273.  
  8274.  
  8275.  
  8276.  
  8277.  
  8278.  
  8279.  
  8280.  
  8281.  
  8282.  
  8283.  
  8284.  
  8285.  
  8286.  
  8287.  
  8288.  
  8289.  
  8290.  
  8291.  
  8292.  
  8293.  
  8294.  
  8295.  
  8296.  
  8297.  
  8298.  
  8299.  
  8300.  
  8301.  
  8302.  
  8303.  
  8304.  
  8305.  
  8306.  
  8307.  
  8308.  
  8309.  
  8310.                            Bingo 3.10 Reference Manual
  8311.                                        137
  8312.  
  8313.  
  8314.  
  8315.  
  8316.                                 Acknowledgements
  8317.                                 ----------------
  8318.  
  8319.           There are many I must acknowledge for the inspiration for writing
  8320.      this program: family, friends, colleagues. In addition, I want to
  8321.      thank Borland for their excellent Turbo C compiler, which I used to
  8322.      write Bingo; IBM for making my beloved baby, lo those many years ago; 
  8323.      IBM again for creating OS/2 2.0, which has speeded development
  8324.      considerably, and all the other folks who wrote software I used to
  8325.      create Bingo.  In particular, thanks to Ralf Brown for his excellent
  8326.      SPAWNO libraries which I used in this version.  Thanks to Gateway
  8327.      computers, for making my workhorse.  Thanks to all my computer science
  8328.      professors, who instilled the knowledge to write such an application
  8329.      in me, often against my will. 
  8330.           Thanks to the members of the Columbus Computer Society (CCS),
  8331.      particularly the members of the Programmer's SIG, several of whom
  8332.      served as Beta test people during versions 1.0 to 2.0, putting their
  8333.      programs In Harm's Way as they tested features.
  8334.           Thanks to Jorge, Bradley, Alan, Mike, Pierre, Mike, all of the
  8335.      beta testers who worked on v3.10, and all the others for more positive
  8336.      feedback than anyone could hope for.
  8337.           Thanks to the BedPiglet, for understanding the time involved in
  8338.      doing this, and for her smile.  I *am* going to marry this girl, this
  8339.      coming October 16th.  Life just gets better!!!!
  8340.  
  8341.  
  8342.  
  8343.  
  8344.  
  8345.  
  8346.  
  8347.  
  8348.  
  8349.  
  8350.  
  8351.  
  8352.  
  8353.  
  8354.  
  8355.  
  8356.  
  8357.  
  8358.  
  8359.  
  8360.  
  8361.  
  8362.  
  8363.  
  8364.  
  8365.  
  8366.  
  8367.  
  8368.                            Bingo 3.10 Reference Manual
  8369.                                        138
  8370.  
  8371.  
  8372.  
  8373.  
  8374.  
  8375.                                       Index
  8376.                                       -----
  8377.      .CFG  . . . . . . . . . . . . . . . . . . . . . . . . 19, 107-110, 136
  8378.      .INI  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25, 89
  8379.      abort . . . . . . . . . . . . .  28, 29, 45, 61, 62, 88, 110, 113, 131
  8380.      abort_all . . . . . . . . . . . . . . . . . . . . . . . . . . . 45, 62
  8381.      again . . . . . 27, 29, 33, 49, 52, 65, 77, 84, 85, 117, 134, 136, 138
  8382.      align . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80, 82
  8383.      ascii_table . . . . . . . . . . . . . . . . . . . . . . . . . . 37, 64
  8384.      ask 6, 28-31, 36, 62, 74, 77-79, 83, 88, 107, 111, 113, 121-130, 133, 134
  8385.      ASP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  3
  8386.      Association of Shareware Professionals  . . . . . . . . . . . . . .  3
  8387.      atoi  . . . . . . . . . . . . . . . . . . . . . . . . .  111, 115, 134
  8388.      b_cmd . . . . . . . . . . . . . . . . . . . .  112, 115, 119, 131, 134
  8389.      back_space  . . . . . . . . . . . . . . . . . . . . . . . . . .  49-51
  8390.      back_tab  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
  8391.      backup_all  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
  8392.      backup_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
  8393.      BE.EXE  . . . . . . . . . . . . . . . . . . . .  10-12, 22, 23, 38, 64
  8394.      beep  . . . . . . . . . . . . . . . . . . . . . . . .  29, 30, 42, 112
  8395.      begin_line  . . . . . . . . . . . . . . . . . . . . . . . . .  69, 111
  8396.      begin_of_text . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
  8397.      block_copy  . . . . . . . . . . . . . . . . . . . . . . . . . . 53, 54
  8398.      block_delete  . . . . . . . . . . . . . . . . . . . . . . . . . 53, 55
  8399.      block_load  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
  8400.      block_move  . . . . . . . . . . . . . . . . . . . . . . . . . . 53, 54
  8401.      block_save  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
  8402.      bot_of_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
  8403.      bottom_of_block . . . . . . . . . . . . . . . . . . . . . . . . . . 69
  8404.      bottom_of_screen  . . . . . . . . . . . . . . . . . . . . . . . . . 69
  8405.      box_char  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  114
  8406.      box_pick  . . . . . . . . . . . . . . . . . . . . . . .  112, 116, 135
  8407.      box_yesno . . . . . . . . . . . . . . . . . . . . . . . . . . . .  113
  8408.      buffer_info . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
  8409.      carriage  . . . . . . . . . . . . . . . .  45, 46, 49, 61, 74, 86, 126
  8410.      center_line . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
  8411.      center_text . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
  8412.      chdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
  8413.      Chess . 1, 2, 6, 9, 11, 15, 18, 19, 22, 23, 31, 47, 79, 82, 87-96, 98,
  8414.                100, 103, 105, 106-113, 115, 117, 118, 121, 130-132, 134-136
  8415.      choose_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
  8416.      clean_all . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
  8417.      clean_file  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
  8418.      cmd_line  . . . . . . . . . . . . . . . . . . . .  79, 82, 86, 88, 111
  8419.      conf_auto_cut . . . . . . . . . . . . . . . . . . . . . . . . . 23, 44
  8420.      conf_autoindent . . . . . . . . . . . . . . . . . . . . . . . . 41, 86
  8421.      conf_automark . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
  8422.      conf_backspace  . . . . . . . . . . . . . . . . . . . . . . . . . . 42
  8423.      conf_backups  . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
  8424.      conf_bmarg  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
  8425.  
  8426.                            Bingo 3.10 Reference Manual
  8427.                                        139
  8428.  
  8429.  
  8430.  
  8431.  
  8432.      conf_bounce . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
  8433.      conf_button_wait  . . . . . . . . . . . . . . . . . . . . . . . . . 42
  8434.      conf_carriage . . . . . . . . . . . . . . . . . . . . . . . . . 46, 49
  8435.      conf_chess_trace  . . . . . . . . . . . . . . . . . . . . . .  47, 110
  8436.      conf_cmode  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
  8437.      conf_color  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
  8438.      conf_cut_stack  . . . . . . . . . . . . . . . . . . . . . . . . 43, 57
  8439.      conf_def_ext  . . . . . . . . . . . . . . . . . . . . . . . .  43, 114
  8440.      conf_delete_join  . . . . . . . . . . . . . . . . . . . . . . . 46, 50
  8441.      conf_delims . . . . . . . . . . . . . . . . . . . . . . . . . . 45, 82
  8442.      conf_dialogue . . . . . . . . . . . . . . . . . . . . . . . . . 28, 47
  8443.      conf_eof  . . . . . . . . . . . . . . . . . . . . . . . . . . . 41, 61
  8444.      conf_eol_display  . . . . . . . . . . . . . . . . . . . . . . . . . 45
  8445.      conf_erronly  . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
  8446.      conf_exit_to_pick . . . . . . . . . . . . . . . . . . . . . . . . . 45
  8447.      conf_insert . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
  8448.      conf_key_bios . . . . . . . . . . . . . . . . . . . . . . . .  44, 115
  8449.      conf_kill_size  . . . . . . . . . . . . . . . . . . . . . . . . 43, 58
  8450.      conf_lfs  . . . . . . . . . . . . . . . . . . . . . . . . . . . 40, 61
  8451.      conf_lines_per  . . . . . . . . . . . . . . . . . . . . . . . . . . 43
  8452.      conf_lmarg  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
  8453.      conf_mark_paste . . . . . . . . . . . . . . . . . . . . . . . . . . 48
  8454.      conf_matching . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
  8455.      conf_mdelay . . . . . . . . . . . . . . . . . . . . . . . . . . 35, 42
  8456.      conf_mouse  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
  8457.      conf_name_save  . . . . . . . . . . . . . . . . . . . . . . . . 45, 47
  8458.      conf_para . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
  8459.      conf_prn  . . . . . . . . . . . . . . . . . . . . . . . . . 43, 45, 46
  8460.      conf_prn_eol  . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
  8461.      conf_prn_header . . . . . . . . . . . . . . . . . . . . . . . . . . 46
  8462.      conf_prn_lineno . . . . . . . . . . . . . . . . . . . . . . . . . . 46
  8463.      conf_profile  . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
  8464.      conf_recognize  . . . . . . . . . . . . . . . . . . . . . . . . 47, 87
  8465.      conf_resume_pos . . . . . . . . . . . . . . . . . . . . . . . . . . 47
  8466.      conf_rmargin  . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
  8467.      conf_scr_save . . . . . . . . . . . . . . . . . . . . . . . 45, 47, 89
  8468.      conf_search . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
  8469.      conf_shadow . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
  8470.      conf_smart_tabs . . . . . . . . . . . . . . . . . . . . . . . . . . 44
  8471.      conf_sound  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
  8472.      conf_stripping  . . . . . . . . . . . . . . . . . . . . . . . . . . 41
  8473.      conf_tabsize  . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
  8474.      conf_timed_backups  . . . . . . . . . . . . . . . . . . . . . . . . 46
  8475.      conf_tmarg  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
  8476.      conf_trail  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
  8477.      conf_undo . . . . . . . . . . . . . . . . . . . . . . . . . . . 47, 57
  8478.      conf_video_mode . . . . . . . . . . . . . . . . . . . . . . . . . . 43
  8479.      conf_vmem . . . . . . . . . . . . . . . . . . . . . . . . . . . 13, 48
  8480.      conf_wild_load  . . . . . . . . . . . . . . . . . . . . . . . . . . 47
  8481.      conf_win_close  . . . . . . . . . . . . . . . . . . . . . . . . . . 42
  8482.      conf_word . . . . . . . . . . . . . . . . . . . . . . . . . . . 45, 81
  8483.  
  8484.                            Bingo 3.10 Reference Manual
  8485.                                        140
  8486.  
  8487.  
  8488.  
  8489.  
  8490.      conf_wordwrap . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
  8491.      copy  . . .  4, 5, 8, 10, 12, 44, 52-55, 57, 62, 64, 95, 104, 114, 132
  8492.      copy_append . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
  8493.      cursor_down . . . . . . . . . . . . . . . . . . . . . . . . . . 35, 68
  8494.      cursor_left . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
  8495.      cursor_right  . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
  8496.      cursor_up . . . . . . . . . . . . . . . . . . . . . . . . . . . 68, 85
  8497.      cut . . . . . . . . . . . . . . . . . . 23, 43, 44, 49, 51-55, 57, 109
  8498.      cut_append  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
  8499.      default_bspace  . . . . . . . . . . . . . . . . . . . . . . . . 49, 51
  8500.      default_del . . . . . . . . . . . . . . . . . . . . . . . . . . 49, 51
  8501.      define_scrap  . . . . . . . . . . . . . . . . . . . . . . . . . 65, 66
  8502.      del_bol . . . . . . . . . . . . . . . . . . . . . . . . . . 49, 50, 57
  8503.      del_char  . . . . . . . . . . . . . . . . . . . . . . . . . . .  49-51
  8504.      del_eol . . . . . . . . . . . . . . . . . . . . . . . . . . 49, 50, 57
  8505.      del_line  . . . . . . . . . . . . . . . . . . . . . . . . . 49, 50, 57
  8506.      del_word_lt . . . . . . . . . . . . . . . . . . . . . . . . . . 49, 51
  8507.      del_word_rt . . . . . . . . . . . . . . . . . . . . . . . . . . 49, 51
  8508.      delete_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
  8509.      detab . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  1, 80
  8510.      display_file  . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
  8511.      down_page . . . . . . . . . . . . . . . . . . . . . . . .  35, 68, 112
  8512.      dup_line  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
  8513.      edit_file . . . . . . . . . . . . . . . . . . . . . .  58, 61, 83, 111
  8514.      emacs_yank  . . . . . . . . . . . . . . . . . . . . . . . . . . 53, 56
  8515.      end_line  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
  8516.      end_macro . . . . . . . . . . . . . . . . . . . . . . . . . . . 65, 67
  8517.      entab . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  1, 80
  8518.      exec_chess  . . . . . . . . . . . . . .  79, 82, 88, 89, 108, 109, 135
  8519.      exec_command  . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
  8520.      extend_mark . . . . . . . . . . . . . . . . . . . . . . . . . . 52, 54
  8521.      fcase_block . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
  8522.      file  .  1, 2, 4, 9-11, 13-15, 17-19, 21-25, 28-33, 35, 36, 40-47, 50,
  8523.                  52-55, 57-59, 61, 62-64, 66-71, 74-81, 83, 87-89, 107-112,
  8524.                                             114, 116, 117, 120-126, 134-136
  8525.      file_all  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
  8526.      file_autoindent . . . . . . . . . . . . . . . . . . . . . . . . .  121
  8527.      file_bspace . . . . . . . . . . . . . . . . . . . . . . . . . 121, 126
  8528.      file_changes  . . . . . . . . . . . . . . . . . . . . . . . . . .  121
  8529.      file_cmode  . . . . . . . . . . . . . . . . . . . . . . . . . 121, 126
  8530.      file_column . . . . . . . . . . . . . . . . . . . . . . . . . . .  122
  8531.      file_id_no  . . . . . . . . . . . . . . . . . . . . . . . . . . .  122
  8532.      file_matching . . . . . . . . . . . . . . . . . . . . . . . . . .  122
  8533.      file_name . . . . . . . . . . . . . . . . . . . 107, 111, 121-123, 134
  8534.      file_new  . . . . . . . . . . . . . . . . . . . . . . . . . . 111, 122
  8535.      file_number . . . . . . . . . . . . . . . . . . . . . . . . . . .  122
  8536.      file_path . . . . . . . . . . . . . . . . . . . . . . .  107, 123, 134
  8537.      file_rmargin  . . . . . . . . . . . . . . . . . . . . . . . . . .  123
  8538.      file_smart_tabs . . . . . . . . . . . . . . . . . . . . . . . . .  123
  8539.      file_tabsize  . . . . . . . . . . . . . . . . . . . . . . . . . .  124
  8540.      file_timed  . . . . . . . . . . . . . . . . . . . . . . . . . . .  124
  8541.  
  8542.                            Bingo 3.10 Reference Manual
  8543.                                        141
  8544.  
  8545.  
  8546.  
  8547.  
  8548.      file_w_height . . . . . . . . . . . . . . . . . . . . . . . . . .  124
  8549.      file_w_left . . . . . . . . . . . . . . . . . . . . . . . . . . .  124
  8550.      file_w_top  . . . . . . . . . . . . . . . . . . . . . . . . . . .  124
  8551.      file_w_width  . . . . . . . . . . . . . . . . . . . . . . . . . .  124
  8552.      file_wordwrap . . . . . . . . . . . . . . . . . . . . . . . . . .  124
  8553.      file_x  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  125
  8554.      file_y  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  125
  8555.      fill_block  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
  8556.      get_char  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  114
  8557.      get_curr_text . . . . . . . . . . . . . . . . . . . . . . . . . .  114
  8558.      get_fname . . . . . . . . . . . . . . . . . . . . . . . . . . . .  114
  8559.      get_str . . . . . . . . . . . . . . . . . . . . . . . . . . . 113, 134
  8560.      get_text  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  114
  8561.      get_yesno . . . . . . . . . . . . . . . . . . . . . . . . . . . .  113
  8562.      getkey  . . . . . . . . . . . . . . . . . . . . . .  107-109, 115, 134
  8563.      global  . . . . . . . .  41, 42, 44, 57, 78, 79, 88, 92, 105, 117, 135
  8564.      help  . . . . . . . . 3, 5, 7, 10, 29, 34, 36, 58, 64, 76, 89, 94, 115
  8565.      indent_down . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
  8566.      indent_tab  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
  8567.      indent_up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
  8568.      info  . . . . . . . . . . . . . . . . . . .  4, 29, 36, 45, 46, 55, 64
  8569.      insert_tab  . . . . . . . . . . . . . . . . . . . . . . . . . . 44, 49
  8570.      isearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
  8571.      isearch_files . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
  8572.      itoa  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  115
  8573.      jump  . . . . . . . . . . . . . . . . . . . . . . . . . . .  58, 68-70
  8574.      jump_mark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
  8575.      key . 10, 11, 15-21, 23, 27-29, 33, 34, 36, 44, 64-67, 77, 79, 82, 85,
  8576.                                  88, 107, 109, 110, 112, 115, 119, 131, 135
  8577.      key_set_load  . . . . . . . . . . . . . . . . . . . . . . . . . 15, 67
  8578.      key_set_save  . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
  8579.      KEYCFG  . . . . . . . . . . .  10, 15, 19-21, 33, 58, 66, 85, 107, 108
  8580.      KEYINFO . . . . . . . . . . . . . . . . . . . . . . . . . . .  21, 108
  8581.      last_error  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
  8582.      lcase_block . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
  8583.      line_mark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
  8584.      load_file . . . . . . . . . . . . . . . . . . . . . . . . . 18, 19, 61
  8585.      load_profile  . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
  8586.      look_buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
  8587.      main_menu . . . . . . . . . . . . . . . . . . . . . . . . . . . 27, 64
  8588.      mark_last_found . . . . . . . . . . . . . . . . . . . . . . . . . . 79
  8589.      mark_word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
  8590.      match_delim . . . . . . . . . . . . . . . . . . . . . . . . . . 45, 82
  8591.      memcpy  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  115
  8592.      modify_save . . . . . . . . . . . . . . . . . . . 18, 61, 62, 107, 134
  8593.      modify_save_all . . . . . . . . . . . . . . . . . . . . . . . . 18, 62
  8594.      Mouse . . . . . . . . 1, 2, 15, 17, 20, 24, 27, 33-37, 42, 45, 70, 127
  8595.      mouse_scroll  . . . . . . . . . . . . . . . . . . . . . . . . . 34, 70
  8596.      msg . . . . . . . . . . . . . . .  96, 97, 103, 107-109, 116, 117, 134
  8597.      name_buffer . . . . . . . . . . . . . . . . . . . . . . . . . . 53, 55
  8598.      new_line  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
  8599.  
  8600.                            Bingo 3.10 Reference Manual
  8601.                                        142
  8602.  
  8603.  
  8604.  
  8605.  
  8606.      next_error  . . . . . . . . . . . . . . . . . . . . . . . . 18, 58, 59
  8607.      next_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
  8608.      next_word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
  8609.      one_recognize . . . . . . . . . . . . . . . . . . . . . . . . . 87, 89
  8610.      onekey_def  . . . . . . . . . . . . . . . . . . . . . . . . . . 65, 66
  8611.      paste . . . . . . . . . . . . . . .  1, 24, 28, 43, 48, 52-58, 60, 127
  8612.      paste_kill  . . . . . . . . . . . . . . . . . . . . . . 53, 56, 58, 60
  8613.      paste_replace . . . . . . . . . . . . . . . . . . . . . . . . . 52, 54
  8614.      pick_exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
  8615.      pick_file . . . . . . . . . . . . . . . . . . . . . . . . . . 112, 116
  8616.      place_mark  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
  8617.      point_mark  . . . . . . . . . . . . . . . . . . . . . . . . . . 34, 54
  8618.      prev_error  . . . . . . . . . . . . . . . . . . . . . . . . . . 58, 59
  8619.      prev_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
  8620.      prev_word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
  8621.      print_file  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
  8622.      put_char  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  116
  8623.      put_text  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  116
  8624.      put_text_curr . . . . . . . . . . . . . . . . . . . . . . . . . .  116
  8625.      query_quote . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
  8626.      quit  . . . . . . . . . . . . . . . . . . . .  29, 45, 61, 62, 79, 136
  8627.      quit_all  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
  8628.      reform_para . . . . . . . . . . . . . . . . . . . . . . . . . . 48, 81
  8629.      rename_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
  8630.      repeat  . . . . . . . . . . . . . .  2, 5, 24, 65, 77, 82, 85, 89, 101
  8631.      repeat_last   . . . . . . . . . . . . . . . . . . . . . . . . . 85, 89
  8632.      replace . . . 1, 18, 24, 41, 52, 54, 57, 75-79, 88, 111, 117, 128, 136
  8633.      report_bsize  . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
  8634.      restore_line  . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
  8635.      rotate_kill . . . . . . . . . . . . . . . . . . . . . . . . . . 58, 60
  8636.      run . . . .  10, 11, 19, 22, 23, 38, 67, 87, 89, 107-110, 117, 134-136
  8637.      run_macro_file  . . . . . . . . . . . . . . . . . . . . . . . . . . 67
  8638.      save_all  . . . . . . . . . . . . . . . . . . . . . . . . . . . 18, 62
  8639.      save_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
  8640.      save_settings . . . . . . . . . . . . . . . . . . . . . . . 23, 25, 40
  8641.      scrap   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
  8642.      scroll_down . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
  8643.      scroll_left . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
  8644.      scroll_right  . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
  8645.      scroll_up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
  8646.      search  . . . . 1, 18, 19, 24, 30, 41, 57, 75-79, 82, 86, 88, 128, 136
  8647.      search_apply  . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
  8648.      send_ff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
  8649.      send_lf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
  8650.      send_sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
  8651.      setup_err_parse . . . . . . . . . . . . . . . . . . . . . . 18, 58, 59
  8652.      sformat   . . . . . . . . . . . . . . . . . . . . . . . . . . . .  118
  8653.      shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72, 73
  8654.      shift_block . . . . . . . . . . . . . . . . . . . . . . . . . . 57, 81
  8655.      show_recognize  . . . . . . . . . . . . . . . . . . . . . . . . . . 64
  8656.      single_key_load . . . . . . . . . . . . . . . . . . . . . . . . . . 67
  8657.  
  8658.                            Bingo 3.10 Reference Manual
  8659.                                        143
  8660.  
  8661.  
  8662.  
  8663.  
  8664.      single_key_save . . . . . . . . . . . . . . . . . . . . . . . . 66, 67
  8665.      snap_to_mouse_xy  . . . . . . . . . . . . . . . . . . . . . . . 34, 70
  8666.      sort_block  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
  8667.      str . . . . . . . . . . . . . . . . . . . . .  112, 113, 115, 119, 134
  8668.      strcat  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  119
  8669.      strcmp  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  119
  8670.      strcpy  . . . . . . . . . . . . .  95-97, 104, 107, 115, 118, 119, 134
  8671.      strip_highbit . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
  8672.      strlen  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  119
  8673.      strndx  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  120
  8674.      swap_buf_and_block  . . . . . . . . . . . . . . . . . . . . . . . . 55
  8675.      swap_execute  . . . . . . . . . . . . . . . . . . 18, 72, 86, 112, 119
  8676.      swap_shell  . . . . . . . . . . . . . . . . . . . . . . . . . . 72, 73
  8677.      switch_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
  8678.      sys_autoindent  . . . . . . . . . . . . . . . . . . . . . . . . .  125
  8679.      sys_autostrip . . . . . . . . . . . . . . . . . . . . . . . . . .  125
  8680.      sys_autotrail . . . . . . . . . . . . . . . . . . . . . . . . . .  125
  8681.      sys_backups . . . . . . . . . . . . . . . . . . . . . . . . . . .  125
  8682.      sys_bounce  . . . . . . . . . . . . . . . . . . . . . . . . . . .  125
  8683.      sys_bspace  . . . . . . . . . . . . . . . . . . . . . . . . . . .  126
  8684.      sys_cmode . . . . . . . . . . . . . . . . . . . . . . . . . . . .  126
  8685.      sys_cols  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  126
  8686.      sys_delete  . . . . . . . . . . . . . . . . . . . . . . . . . . .  126
  8687.      sys_extensions  . . . . . . . . . . . . . . . . . . . . . . . . .  126
  8688.      sys_fcount  . . . . . . . . . . . . . . . . . . . . . . . . . . .  127
  8689.      sys_inmacro . . . . . . . . . . . . . . . . . . . . . . . . . . .  127
  8690.      sys_insmode . . . . . . . . . . . . . . . . . . . . . . . . . . .  127
  8691.      sys_matching  . . . . . . . . . . . . . . . . . . . . . . . . . .  127
  8692.      sys_mouse . . . . . . . . . . . . . . . . . . . . . . . . . . . .  127
  8693.      sys_rdefs . . . . . . . . . . . . . . . . . . . . . . . . . . . .  128
  8694.      sys_recording . . . . . . . . . . . . . . . . . . . . . . . . . .  128
  8695.      sys_rmargin . . . . . . . . . . . . . . . . . . . . . . . . . . .  128
  8696.      sys_rows  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  128
  8697.      sys_sdefs . . . . . . . . . . . . . . . . . . . . . . . . . . . .  128
  8698.      sys_smart_tabs  . . . . . . . . . . . . . . . . . . . . . . . . .  128
  8699.      sys_tabsize . . . . . . . . . . . . . . . . . . . . . . . . . . .  129
  8700.      sys_timed . . . . . . . . . . . . . . . . . . . . . . . . . . . .  129
  8701.      sys_word_delim  . . . . . . . . . . . . . . . . . . . . . . . . .  129
  8702.      sys_wordwrap  . . . . . . . . . . . . . . . . . . . . . . . . . .  129
  8703.      sys_zoom  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  129
  8704.      text recognition  . . . . . . . . . .  1, 24, 47, 64, 87, 89, 123, 128
  8705.      threekey_def  . . . . . . . . . . . . . . . . . . . . . . . . . 65, 66
  8706.      time_stamp  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
  8707.      toggle_autoindent . . . . . . . . . . . . . . . . . . . . . . . . . 50
  8708.      toggle_box_draw . . . . . . . . . . . . . . . . . . . . . . . . . . 85
  8709.      toggle_cmode  . . . . . . . . . . . . . . . . . . . . . . . . . 40, 50
  8710.      toggle_display  . . . . . . . . . . . . . . . . . . . . . . . . . . 88
  8711.      toggle_ins  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
  8712.      toggle_wrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
  8713.      top_of_block  . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
  8714.      top_of_file . . . . . . . . . . . . . . . . . . . . . . . . .  69, 111
  8715.  
  8716.                            Bingo 3.10 Reference Manual
  8717.                                        144
  8718.  
  8719.  
  8720.  
  8721.  
  8722.      top_of_screen . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
  8723.      twokey_def  . . . . . . . . . . . . . . . . . . . . . . . . . . 65, 66
  8724.      ucase_block . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
  8725.      undefine_key  . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
  8726.      undo  . . . . . . . . . . . . . . . . 1, 2, 6, 24, 47, 53, 56, 57, 129
  8727.      unkill  . . . . . . . . . . . . . . . . . . . .  24, 49, 53, 56-58, 60
  8728.      unmark  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54, 79
  8729.      up_page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
  8730.      update_display  . . . . . . . . . . . . . . . . . . . .  116, 117, 120
  8731.      valid_name  . . . . . . . . . . . . . . . . . . . . . . . . . . .  120
  8732.      version  1, 2, 4-6, 8, 13, 14, 18, 23, 31, 42, 46, 57, 58, 61, 64, 72,
  8733.                                        74, 75, 77, 84, 85, 87, 129, 135-138
  8734.      version_info  . . . . . . . . . . . . . . . . . . . . . . . . .  4, 64
  8735.      vertical_mark   . . . . . . . . . . . . . . . . . . . . . . . . . . 54
  8736.      view_screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
  8737.      virtual memory  . . . . . . . . . . . 1, 2, 11, 13, 14, 24, 38, 48, 57
  8738.      window_bottom . . . . . . . . . . . . . . . . . . . . . . . . . 18, 84
  8739.      window_close  . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
  8740.      window_edit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
  8741.      window_load . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
  8742.      window_max  . . . . . . . . . . . . . . . . . . . . . . . . . . 83, 84
  8743.      window_next . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
  8744.      window_one  . . . . . . . . . . . . . . . . . . . . . . . . 18, 83, 84
  8745.      window_previous . . . . . . . . . . . . . . . . . . . . . . . . 18, 84
  8746.      window_resize . . . . . . . . . . . . . . . . . . . . . .  18, 84, 115
  8747.      window_split  . . . . . . . . . . . . . . . . . . . . . . . . . 18, 83
  8748.      window_top  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
  8749.      window_vertical . . . . . . . . . . . . . . . . . . . . . . . . . . 83
  8750.      window_zoom . . . . . . . . . . . . . . . . . . . . . . . . . . 83, 84
  8751.      word_count  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
  8752.      write_profile . . . . . . . . . . . . . . . . . . . . . . . .  89, 109
  8753.      ws_size . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  130
  8754.      zap_file  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
  8755.  
  8756.  
  8757.  
  8758.  
  8759.  
  8760.  
  8761.  
  8762.  
  8763.  
  8764.  
  8765.  
  8766.  
  8767.  
  8768.  
  8769.  
  8770.  
  8771.  
  8772.  
  8773.  
  8774.                            Bingo 3.10 Reference Manual
  8775.                                        145
  8776.  
  8777.